【发布时间】:2011-05-24 04:18:34
【问题描述】:
我正在尝试学习如何使用 Java EE 6 构建 Web 应用程序,但我很难理解在典型 MVC2 设计的组件之间传递信息的最佳方式。
按照我的理解,使用 Java EE 的 MVC2 模式是:数据是模型,控制器是 servlet,视图是 JSP。当然这只是一个例子。
所以我已经编写了以下三个部分,并且我知道如何将它们安装在我正在使用的服务器(Tomcat 7)中,入口点将是下面的 html 文件。我正在努力解决 servlet 如何将其响应转发给 JSP,以及如何将该 JSP 发送回客户端浏览器。
HTML 文件(demo.html):
<html>
<head>
<title>MVC2 Demo</title>
</head>
<body>
<form method='post' action='/mvc2-demo/DemoServlet'>
<h1> MVC2 Demo </h1>
Name: <input type='text' name='input_name' size='50'>
<br><br>
Age: <input type='text' name='input_age' size='10'>
<br><br>
<input type='submit' value='SUBMIT INFO'>
</form>
</body>
</html>
servlet (DemoServlet.java):
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DemoServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html");
try {
PrintWriter pw = response.getWriter();
String name = request.getParameter("input_name");
String age = request.getParameter("input_age");
pw.println("Information received by Servlet: " + name + " : " + age);
// forward this response to Demo.jsp...
pw.close();
} catch (Exception e) {
System.out.println("Cannot get writer: " + e);
}
}
}
JSP(Demo.jsp):
<html>
<head><title> JSP Demo </title></head>
<body>
<h1>JSP Demo</h1>
<ul>
<%= get response forwarded from servlet.. %>
</ul>
</body>
</html>
入口点是一个 HTML 页面,它显示一个带有两个输入字段(一个用于某人的姓名,另一个用于其年龄)和一个提交按钮的简单表单。当用户点击提交时,表单将其数据发送到 DemoServlet。然后,servlet 从 HTTP 请求负载中提取数据并将其保存在一些本地字符串变量中。我注释掉的部分是我想以某种方式将此信息转发给 JSP。一旦我这样做了,JSP 会自动发送到客户端吗?是什么触发的?
感谢您的帮助。
【问题讨论】: