jsp与Servlet结合案例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Jsp与Servlet结合案例
在jsp入门中,我们了解了jsp与Servlet的分工,jsp作为请求发起页面和请求结束页面,而Servlet 就是做请求处理。
下面通过一个案例的学习,掌握jsp与Servlet的应用。
具体如下所示:该案例实现了一个加法运算,具体功能是:在页面中输入两个数,然后点击页面中的“提交”按钮,请求Servlet,Servlet对数据进行处理,并把处理结果存放在request域中,最后再请求转发到另一个页面,在另一个页面中显示处理结果。
以上是本案例的功能分析,下面我们通过一站图来跟清楚的理解该需求,如图1-1所示:
图1-1案例流程图
下面我们来完成该案例,详细请参考jsp与Servlet案例详解,点击此处Example16.zip下载案例源代码,具体步骤如下所示:
(1)创建一个web应用,Example16,在该应用的WebRoot目录下新建一个目录jsps,并在该目录下创建一个jsp文件,form.jsp,主要代码如例1-1所示:
例1-1form.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-2result.jsp
<body>
<%
//从request域中获取数据
Integer sum=(Integer)request.getAttribute("sum");
%>
<%=sum%><!--向浏览器端输出sum的值-->
</body>
(3)在该应用下新建一个Servlet类,SumServlet,主要代码如例1-3所示:
例1-3SumServlet.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所示:
(6)在图1-2中,输入:整数1:123,整数2:456,然后点击“提交”,浏览器显示结果如图1-3所示:
由图1-3所示可知,在result.jsp页面中,将sum属性从request域中取出。