将用到的不同思路在此记录,不时更新。

涉及页面跳转、页面重定向、参数传递。

————————————————————————————————————————————————

提醒:

这些方法仅适用于多页面的传递,即【前台1-后台2-前台3】这种。

如果想要实现【前台1-后台2-前台1】这种单页面的传递,可以使用ajax等技术。

ajax的前后端数值传递在另一篇博客写出。

————————————————————————————————————————————————

目录

servlet页之间:

JSP到JSP:

页面跳转:

参数传递:

  (1)使用request对象获取客户端提交的信息(以两个页面传递为例)

(2)使用session对象获取从客户端提交的信息(以三个页面传递为例)

  (3)利用隐藏域传递数据

(4)通过超链接传递数据

JSP到servlet:

(1)使用request对象接收参数

  (2)使用session对象,url,form表单传递参数

servlet到JSP:

———————————————————————————————————————

servlet页之间:

常用:

request.getRequestDispatcher("目标页").forward(request, response);

常用:

setAttribute()和getAttribute()方法传递参数

 

JSP到JSP:

页面跳转:

//常用于servlet,但是JSP也可以用 
(1)RequestDispatcher.forward()
重定向后浏览器地址栏URL不变。【原来地址】
forward()无法再后面带参数传递,比如servlet?name=tom。
可以通过response.setAttribute("name",name)传递。
通常用于servlet。


 (2)response.sendRedirect()
重定向后在浏览器地址栏上会出现重定向页面的URL。
sengRedirect()可以带参数传递,比如servlet?name=tom传至下个页面
可以在不同服务器间使用。

//纯JSP
(3)jsp:forward 方法,本质是RequestDispatcher.forward()
<jsp:forward page=""/>
    带参数:<jsp:param value="list" name="action" />
</jsp:forward>

(4)修改HTTP header的Location属性来重定向,没用过,记录
String newLocn = "2.jsp";
response.setHeader("Location",newLocn);
使用后会直接重定向到新的页面,暂时感觉没用

(5)JSP中实现在某页面停留若干秒后,自动重定向到另一页面
<meta http-equiv="refresh" content="5; url=目标.jsp">
延申:可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。
String content = "5; url=5_2.jsp";
response.setHeader("REFRESH",content);

方法2:JS跳转,两秒后跳转新页面 
window.setTimeout("window.location='index.shtml'",2000);

参数传递:

(1)使用request对象获取客户端提交的信息(以两个页面传递为例)

JSP 1:
//通过一个form表单,发送
<form action="b.jsp">
    <input type="text" name="name">
    <input type="submit" value="Enter" name="submit">
</form>


JSP 2:
//通过request对象获取输入的名字,可以获取任何具有NAME值的对象值
<%
    String textContent = request.getParameter("name");
%>

(2)使用session对象获取从客户端提交的信息(以三个页面传递为例)

JSP 1
//页面1将数据通过form提供给页面2
<form action="session2.jsp" method="post">
    请输入您的姓名:
    <input type="text" name="jsp1">
    <input type="submit" value="submit">
</form>

JSP 2
//页面2得到数据,并储存到session中给页面3
<%			
    String name = request.getParameter("jsp1");			
    session.setAttribute("jsp2",name);		 
%>
	 
    您的姓名是:<%=name%>		 

<form action="session3.jsp" method="post">			
    您喜欢吃什么?			
    <input type="text" name="food"/>					
    <input type="submit" value="submit">		
</form>

JSP 3
//页面3读取来自页面2的session
<%			
    String food = request.getParameter("food");			
    String name = (String)session.getAttribute("thename");			
    String pwd = request.getParameter("pwd");		 
%>		 
    您的姓名是:<%=name%>		 		 
    您喜欢吃:<%=food%>		 		 
    您的密码是:<%=pwd%>

(3)利用隐藏域传递数据

类似于上两种方法,只不过是通过隐藏框来传递

<!-- 隐藏字段,系统时间,并转换为毫秒数 -->
<input type="hidden" name="time" value="<%=new java.util.Date()%>">

(4)通过超链接传递数据

//直接给定固定值
<a href=目标.jsp?参数1=<%=固定值%>>到指定的页面</a>
//传递动态值
<a href=目标.jsp?参数1=<%=你的变量%>>到指定的页面</a>

 

JSP到servlet:

(1)使用request对象接收参数

//JSP页面 1
//通过FORM表单提交

//servlet 1中:
request.getRequestDispatcher("JSP页面2.jsp").forward(request, response);

//JSP页面 2
实验<%=request.getParameter("JSP 1 提交的某个参数") %>,登录成功!

//
这个过程中,JSP页面 1 提交的值分别在servlet和JSP 2 中读取了一次。
但是并非直接由JSP 1 到JSP 2。

然是通过servlet的请求转发:getRequestDispatcher,将request, response转发到JSP 2.

(2)使用session对象,url,form表单传递参数

//JSP中
<%		
    session.setAttribute("testSession","Hello session");		
    request.setAttribute("testRequest","Hello request");		
%>		
<a href="目标页面">单击此处</a>	
<form action="某个servlet?action=某个自定方法" method="post" name="form1">
    <input type="text" name="username"/>			
    <input type="submit" value="submit"/>		
</form>

//servlet
String strSession = (String)request.getSession().getAttribute("testSession"); 	
String strRequest = (String)request.getAttribute("testRequest");
String username = request.getParameter("username");

servlet到JSP:

从servlet到jsp页面传递参数,可以使用URL,request对象,session对象。

方法类似于上述几种。

//servlet
String strRequest = "request传值";		
String strSession = "session传值";		
request.setAttribute("strRequest", strRequest);		
request.getSession().setAttribute("strSession", strSession);


//JSP
<%			
    String strRequest = (String)request.getAttribute("strRequest");		
    String strSession = (String)request.getSession().getAttribute("strSession");
%>