jsp重定向与转发的理解和区别。
最近学了jsp:java server page , java服务器页面技术. 在服务器运行jsp,把html返回给浏览器页面,优势jsp可以写java代码。
重定向:
response.sendRedirect(“地址”);
a. 页面地址显示最终页面
b. 不可向后传递参数
c. 跳到外部站点
服务器转发:
request.getRequestDispatcher(“地址”).forward(request, response);
a. 页面地址显示请求页面
b. 可以向后传递参数
c. 不可以跳到外部站点
两者的区别是:
重定向发出两次请求, 转发只发一次请求。
简单来说转发就是:
A问B借钱,B有钱借给了A,或者B没钱又问C借钱最后借给了A,这时候A还钱只用换给B,与C没有关系。
重定向就是:
A问B借钱 B没钱但是B知道C有钱,告诉了A,说C有钱 ,最后A重新问C借钱。
相关代码:
email.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"?/"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<%
String name = request.getParameter(“name”);
out.print(name);
String msg =" ";
msg = (Strng)request.getAtteribute("msg");
if(msg=null){
msg=" ";
}
%>
用户名:<input type="text" name = "name"><br>
密码:<input type="password" name = "pwd"><br>
<span style="color: red"><%=msg %></span>
<input type="button" value="注册">
</form>
login3.jsp
<% String pwd = request.getParameter("pwd"); String name = request.getParameter("name"); if ("admin".equals(name) && "123".equals(pwd)) { response.sendRedirect("succsee.jsp");
} else {
request.setAttribute("msg", "密码错误!");
request.getRequestDispatcher("login4.jsp").forward(request,
response);
}
%>
</body>
login4.jsp
<% String name = request.getParameter("name"); out.print(name); String msg = " ";
msg = (Strng) request.getAtteribute("msg");
if (msg = null)
msg = " ";
%>
用户名:<%=name%><br>
msg:<%=msg%>
</body>