在
jsp入门中,我们了解了jsp与Servlet的分工,jsp作为请求发起页面和请求结束页面,而Servlet就是做请求处理。下面通过一个案例的学习,掌握jsp与Servlet的应用。具体如下所示:
该案例实现了一个加法运算,具体功能是:在页面中输入两个数,然后点击页面中的“提交”按钮,请求Servlet,Servlet对数据进行处理,并把处理结果存放在request域中,最后再请求转发到另一个页面,在另一个页面中显示处理结果。
以上是本案例的功能分析,下面我们通过一站图来跟清楚的理解该需求,如图1-1所示:
图1-1 案例流程图
下面我们来完成该案例,详细请参考
jsp与Servlet案例详解,点击此处
下载案例源代码,具体步骤如下所示:
(1)创建一个web应用,Example16,在该应用的WebRoot目录下新建一个目录jsps,并在该目录下创建一个jsp文件,form.jsp,主要代码如例1-1所示:
例1-1 form.jsp
<body>
<form action="/Example16/SumServlet" method="post">
整数1:<input type="text" name="num1"/><br/>
整数2:<input type="text" name="num2"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
(2)在jsps目录中再次新建一个jsp文件,result.jsp,它的主要代码如例1-2所示:
例1-2 result.jsp
<body>
<%
//从request域中获取数据
Integer sum =(Integer)request.getAttribute("sum");
%>
<%= sum %><!--向浏览器端输出sum的值-->
</body>
(3)在该应用下新建一个Servlet类,SumServlet ,主要代码如例1-3所示:
例1-3 SumServlet.java
public class SumServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.获取请求参数
String s1=request.getParameter("num1");
String s2=request.getParameter("num2");
//2.将请求参数的类型转换成int类型
Integer num1=Integer.parseInt(s1);
Integer num2=Integer.parseInt(s2);
//3.将两个数加在一起
int sum=num1+num2;
//4.将求和的结果保存在request域中
request.setAttribute("sum", sum);
//5.请求转发到result.jsp
request.getRequestDispatcher("/jsps/result.jsp").forward(request, response);
}
}
例1-3中,在进行请求转发时,转发的路径是“/jsps/result.jsp”。之前我们练习请求转发时都是转发给Servlet,转发路径也就是Servlet的访问路径;现在转发给jsp文件,转发的路径是该jsp页面在WebRoot下的路径,例如result.jsp页面在WebRoot目录下的jsps目录中,那么转发路径就是“/jsps/result.jsp”,如果result.jsp在WebRoot的根目录下,那么转发路径就是“/result.jsp”。
(4)SumServlet在web.xml文件中的访问路径配置为:“/SumServlet”。
(5)将Example16发布到Tomcat服务器中,然后启动服务器,在浏览器地址栏上输入:http://localhost:8080/Example16/jsps/form.jsp,浏览器显示结果如图1-2所示:
图1-2 浏览器显示结果
(6)在图1-2中,输入:整数1:123,整数2:456,然后点击“提交”,浏览器显示结果如图1-3所示:
图1-3 运行结果
由图1-3所示可知,在result.jsp页面中,将sum属性从request域中取出。
本文版权归传智播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Java培训学院
首发:http://www.itcast.cn/javaee