我刚刚开始使用Servlets,我完全被难倒了。
我在线查看了数十种资源,并尝试了所有这些资源但没有成功。所有这些(有微小的变化)都有一个包含以下代码的jsp文件:
<%= request.getAttribute("message")%>
...以及包含此代码的servlet:
String message = "Example source code of Servlet to JSP communication.";
request.setAttribute("message", message);
getServletContext().getRequestDispatcher("/newjsp_1.jsp").forward(request, response);
我把上面的代码放在doPost(),doGet()和servlet的主体中,没有任何作用。然后我发现jsp文件实际上不知道它应该与哪个servlet进行通信。我研究了xml映射和注释映射,但它们似乎并不适用。
到目前为止,我已经与Ajax进行了很好的沟通,但是我可以使用ajax指定操作。如何将数据从jsp传递到servlet,然后再传回?
任何想法都将不胜感激!
答案 0 :(得分:2)
这是一个简单的Servlet-JSP通信示例代码:
<强>的index.jsp 强>
<!doctype html>
<html>
<head>
<title>Servlet - JSP Communication Demo</title>
</head>
<body>
<%
if(request.getAttribute("message") != null) {
out.println("<h1>" + request.getAttribute("message") + "</h1>");
}
%>
<form method="get" action="sayhello">
<label for="name">Enter your name</label>
<input type="text" name="name" id="name" />
<input type="submit" value="Submit">
</form>
</body>
</html>
<强> ServletDemo.java 强>
package com.demo;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletDemo extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(request.getParameter("name") != null && request.getParameter("name") != "") {
request.setAttribute("message", "Hello " + request.getParameter("name"));
}else {
request.setAttribute("message", "");
}
getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
}
}
<强>的web.xml 强>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>Servlet-JSP Communication Demo</servlet-name>
<servlet-class>com.demo.ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet-JSP Communication Demo</servlet-name>
<url-pattern>/sayhello</url-pattern>
</servlet-mapping>
</web-app>
目录结构
--tomcat
--webapps
--servlet
--WEB-INF
--classes
--com
--demo
--ServletDemo.class
--web.xml
--index.jsp
代码说明
这里我创建了一个简单的表单,通过ServletDemo
方法将表单数据发送到GET
servlet。另一方面,servlet获取表单数据并回复一些消息。在JSP中显示消息。
答案 1 :(得分:1)
你采取的方法是古老的方法!这是1999年的JavaWorld article,它描述了如何在servlet和JSP之间进行通信。
在web.xml中,将URL路径绑定到servlet。应用服务器将通过调用servlet上的HTTP GET
响应该URL路径上的doGet()
,并通过调用HTTP POST
来doPost()
。您可以将作为参数传递的HttpServletRequest
的属性设置为这些方法。使用该请求调用forward
方法时,将与JSP共享属性。
这就是它应该如何运作。
答案 2 :(得分:-2)
尝试使用
的request.getRequestDispatcher()。正向(请求,响应)