在这里对forward和include做一个直观的比较,举个例子,看看在页面上是如何表现的。
现在我们有三个页面——index.jsp,welcome.jsp和LoginServlet
这几个页面和Servlet之间的联系,根据名字就可以简单猜到,不赘言。
index.jsp
<body>
<form action="<%=path %>/login" method="post">
用户名:<input type="text" name="username"/>
密码:<input type="password" name="password"/>
<input type="submit" value="登录"/>
</form>
<!-- 用requestScope不用做非空判断-->
<span id="msg" style="color:red;">${requestScope.msg} </span>
</body>welcome.jsp
<body>
<h1>LOGIN SUCEESS!</h1>
<a href="invalidate.jsp">注销</a>
</body>LoginServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
if("Ziccy".equals(username)&&"123".equals(password)){
HttpSession session = request.getSession();
session.setAttribute("isLogin", true);
response.sendRedirect(response.encodeURL("./login_session/welcome.jsp"));
}else{
response.setContentType("text/html");
response.setCharacterEncoding("GBK");
request.setAttribute("msg", "用户名或密码错误.");
request.getRequestDispatcher("./login_session/index.jsp").forward(request, response);//可以把这里换成include试一下效果
PrintWriter out = response.getWriter();
out.print("<h1>哈哈</h1>");
}
}forward方式执行后页面只显示welcome.jsp的内容,即forward语句之后的语句不执行
include方式执行后页面显示welcome.jsp+servlet内容,即include语句之后的语句继续执行
forward和include区别
最新推荐文章于 2022-05-17 14:16:02 发布