JSP 页面传值,jsp页面传

作者:ca88编程

JSP 页面传值,jsp页面传

JSP页面间传递参数是常事索要选取到的作用,临时还亟需七个JSP页面间传递参数。上面介绍一下兑现的艺术。

(1)直接在U奥迪Q5L诉求后加多

如:< a href="thexuan.jsp?action=transparams&detail=directe">直接传送参数< /a>

专门的在动用response.sendRedirect做页面转向的时候,也足以用如下代码:

response.sendRedirect("thexuan.jsp?action=transparams&detail=directe") ,可用request.getParameter(name)取得参数

(2)jsp:param

它能够兑现主页面向满含页面传递参数,如下:

  1. < jsp:include page="Relative URL"> 
  2.  
  3. < jsp:param name="param name" value="paramvalue" /> 
  4.  
  5. < /jsp:include> 

仍是可以够兑今后应用jsp:forward动作做页面跳转时传递参数,如下:

  1. < jsp:forward page="Relative URL"> 
  2.  
  3. < jsp:param name="paramname" value="paramvalue" /> 

< /jsp:forward> 通过这种艺术和一般的表单参数同样的,也足以因此request.getParameter(name)获得参数

(3)设置session和request

透过展现的把参数放置到session和request中,以完成传递参数的目标

  1. session.setAttribute(name,value);  
  2.  
  3. request.setAttribute(name,value)  

取参数:

  1. value=(value className)session.getAttribute(name);  
  2.  
  3. value=(value className)request.getAttribute(name);  
  4.  

我们一定早已注意到了,在取参数的时候,做了类型转变,那是因为放置在session和request中的对象的性质被当作 Java.lang.Object类型的了,纵然不调换,在将直付给value时会报classcastexception十分。

在七个JSP页面之间传递参数

1.       怎么在多个JSP页面之间进行参数字传送递?必要动用JSP的放手功效域对象session。利用它的四个形式setAttribute(),getAttribute()

2.       上边包车型大巴那么些实例达成了把第一个JSP页面包车型客车参数字传送递给第五个页面包车型大巴服从

3.       代码如下:1.jsp

  1. < html> 
  2.        < form method=get action=2.jsp> 
  3.        what's your name< input type=text name=username> 
  4.        < input type=submit value=submit> 
  5.        < /form> 
  6. < /html> 

4.       2.jsp

  1. < html> 
  2.  
  3.        < form method=post action="3.jsp?pass=11"> 
  4.        < %  
  5.               String name=request.getParameter("username");  
  6.               session.setAttribute("username",name);  
  7.        %> 
  8.        Your name is:< %=request.getParameter("username")%> 
  9.        < br>what's your hobby< input type=text name=hobby> 
  10.        < input type=submit value=submit> 
  11.        < /form> 
  12. < /html> 
  13.  
  14.     

5.       3.jsp

  1. < html> 
  2.        your name is:< %=session.getAttribute("username")%> 
  3.        < br> 
  4.        your hobby is:< %=request.getParameter("hobby")%> 
  5.        < br> 
  6.        your password is:< %=request.getParameter("pass")%> 
  7.        < br> 
  8.        < /form> 
  9. < /html> 

页面传值,jsp页面传 JSP页面间传递参数是常事必要动用到的机能,有的时候还亟需三个JSP页面间传递参数。上边介绍一下完毕的法子。 (...

 

或者j1.jsp中有

现实落成如下:

    1.从二个jsp页面跳转到另贰个jsp页面时的参数字传送递

    (1)使用request对象获得客户端提交的新闻

    login.jsp页面代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <form action="getinfo.jsp">  
  7.             <input type="text" name="name">  
  8.             <input type="submit" value="Enter" name="submit">  
  9.         </form>  
  10.     </body>  
  11. </html>  

    getinfo.jsp页面代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <p>获取文本框提交的音信:  
  7.         <%  
  8.             String textContent = request.getParameter("name");  
  9.          %>  
  10.          <br/>  
  11.          <%=textContent%>  
  12.            
  13.         </p>获取开关的名字:  
  14.          <%  
  15.             String buttonName = request.getParameter("submit");  
  16.           %>  
  17.          <br/>  
  18.          <%=buttonName%>  
  19.           
  20.     </body>  
  21. </html>  

图片 1

                                                       

    (2)使用session对象获得从客户端提交的消息

    session1.jsp页面代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <form action="session2.jsp" method="post">  
  7.             请输入您的人名:  
  8.             <input type="text" name="thename">  
  9.             <input type="submit" value="submit">  
  10.         </form>  
  11.     </body>  
  12. </html>  

    session2.jsp经过request对象提取session1.jsp表单中的thename值,并将其保存到session对象中,session2.jsp代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <%  
  7.             String name = request.getParameter("thename");  
  8.             session.setAttribute("thename",name);  
  9.          %>  
  10.          您的真名是:<%=name%>  
  11.          <p>  
  12.         <form action="session3.jsp?pwd=123456" method="post">  
  13.             您爱怜吃哪些?  
  14.             <input type="text" name="food"/>  
  15.             <p>  
  16.             <input type="submit" value="submit">  
  17.         </form>          
  18.     </body>  
  19. </html>  

    session3.jsp的严重性任务是展示结果,它从session对象提取thename的值并呈现它,以验证在四个页面中得以由此session对象存款和储蓄和维系音信,session3.jsp代码如下:

[java] view plaincopy

 

  1. <pre name="code" class="java"><%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <%  
  7.             String food = request.getParameter("food");  
  8.             String name = (String)session.getAttribute("thename");  
  9.             String pwd = request.getParameter("pwd");  
  10.          %>  
  11.          您的人名是:<%=name%>  
  12.          <p>  
  13.          您喜欢吃:<%=food%>  
  14.          <p>  
  15.          您的密码是:<%=pwd%>  
  16.     </body>  
  17. </html></pre>  
  18. <pre></pre>  
  19. <pre></pre>  
  20. <pre></pre>  
  21. <pre></pre>  
  22. <pre></pre>  
  23. <pre></pre>  
  24. <pre></pre>  

    程序运维结果如图2所示:

图片 2

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

    使用遮盖空间记录用户提交日期的hiddenindex.jsp代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <form action="hidden.jsp" method="post" name="form1">  
  7.             <!-- 隐敝字段,系统时间,并转变为纳秒数 -->  
  8.             <input type="hidden" name="time" value="<%=new java.util.Date()%>">  
  9.             <p>  
  10.                 请输入您的人名:<input type="text" name="name">  
  11.             </p>  
  12.             <input type="submit" name="submit" value="submit">  
  13.         </form>  
  14.     </body>  
  15. </html>  

     突显遮掩空间消息的hidden.jsp代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <%  
  7.             String name = request.getParameter("name");  
  8.             String date = request.getParameter("time");  
  9.         %>  
  10.         <p>您的真名是:  
  11.             <%=name %>  
  12.         </p>  
  13.         <p>提交时的类别时间为:  
  14.             <%=date %>  
  15.         </p>  
  16.     </body>  
  17. </html>  

    程序运营结果如下:

 图片 3

                                        

    使用掩盖域的三个破绽是用户可由此翻看网页源程序读到掩饰域的值。

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

    创立链接到别的分页的一级链接page.jsp代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <%  
  5.     int PageCount = 15;  
  6. %>  
  7. <html>  
  8.     <body>  
  9.         <table>  
  10.             <tr>  
  11.                 <td>  
  12.                     <a href=showpage.jsp?ToPage=<%=1%>>到第1页</a>  
  13.                 </td>  
  14.                 <td>  
  15.                     <a href=showpage.jsp?ToPage=<%=PageCount%>>到结尾一页</a>  
  16.                 </td>  
  17.             </tr>  
  18.         </table>        
  19.     </body>  
  20. </html>  

    接收呈现分页showpage.jsp代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <%  
  7.         String toPage = request.getParameter("ToPage");  
  8.         out.println("第"   toPage   "页");  
  9.         %>  
  10.     </body>  
  11. </html>  

    运营结果如下:

图片 4

getAttribute则足以是指标。
getParameter()是获得POST/GET传递的参数值;
getAttribute()是获取对象容器中的数据值;
getParameter:用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用。

<td id="${cart.cartId}">${cart.cartPrice }</td>
<input type="button" onClick="add(${cart.cartPrice })"/>
jquery中接收:
var currentprice;
function add(id){
currentprice=$("#" id).text();
}
另一种形态,当同贰个循环体中须求调用不一致的DOM对应的ID对象,修改price名称就能够
<td id="${cart.cartId}price">${cart.cartPrice }</td>

原网址:

**request.setAttribute()和getAttribute()方法传递的多少只会存在于Web容器内部,在有着转载关系的Web组件之间分享。那四个艺术能够设置Object类型的分享数据。
getParameter得到的都以String类型的。大概是

a、form表单传值:

    2.jsp页面传递参数给servlet

    (1)使用request对象抽出参数

    新建名称叫ForwardServlet的Servlet类,代码如下:

[java] view plaincopy

 

  1. package com.shi.servlet;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. /** 
  11.  * 本类用来获得表单央求消息,并依据央浼信息转发页面 
  12.  */  
  13. public class ForwardServlet extends HttpServlet  
  14. {  
  15.     private static final long serialVersionUID = 1L;  
  16.   
  17.     /** 
  18.      * 构造函数 
  19.      */  
  20.     public ForwardServlet()  
  21.     {  
  22.         super();  
  23.     }  
  24.       
  25.     /** 
  26.      * 初始化 
  27.      */  
  28.     public void init() throws ServletException  
  29.     {}  
  30.       
  31.     /** 
  32.      * doGet()方法 
  33.      */  
  34.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  35.     {  
  36.         doPost(request, response);  
  37.     }  
  38.       
  39.     /** 
  40.      * doPost()方法 
  41.      */  
  42.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  43.     {  
  44.         String name = request.getParameter("name");  
  45.         String pwd = request.getParameter("pwd");  
  46.         if((name!=null && !name.equals("")) && (pwd!=null && !pwd.equals("")))  
  47.         {  
  48.             if(name.equals("mr")&&pwd.equals("123"))  
  49.             {  
  50.                 request.getRequestDispatcher("success.jsp").forward(request, response);  
  51.             }  
  52.             else  
  53.             {  
  54.                 request.getRequestDispatcher("error.jsp").forward(request, response);  
  55.             }  
  56.         }  
  57.     }  
  58.       
  59.     /** 
  60.      * 销毁 
  61.      */  
  62.     public void destroy()  
  63.     {  
  64.         super.destroy();  
  65.     }  
  66. }  

    在web.xml中布局ForwardServlet类,代码如下:

[java] view plaincopy

 

  1. <?xml version="1.0" encoding="GB2312"?>  
  2. <web-app version="2.5" xmlns=""  
  3.     xmlns:xsi=""  
  4.     xsi:schemaLocation="   
  5.     ;  
  6.       
  7.     <!-- 配置servlet -->  
  8.     <servlet>  
  9.         <servlet-name>ForwardServlet</servlet-name>  
  10.         <servlet-class>com.shi.servlet.ForwardServlet</servlet-class>  
  11.     </servlet>  
  12.     <servlet-mapping>  
  13.         <servlet-name>ForwardServlet</servlet-name>  
  14.         <url-pattern>/forward</url-pattern>  
  15.     </servlet-mapping>  
  16.       
  17.     <welcome-file-list>  
  18.         <welcome-file>index.jsp</welcome-file>  
  19.     </welcome-file-list>  
  20. </web-app>  

    新建index.jsp,当中<form>中的action属性值为Servlet类在web.xml中布局的url,提交格局为post,代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <form action="forward" method="post">  
  7.             <table align="center">  
  8.                 <tr>  
  9.                     <td>用户名:</td>  
  10.                     <td>  
  11.                         <input type="text" name="name"/>  
  12.                     </td>  
  13.                 </tr>  
  14.                 <tr>  
  15.                     <td>密码:</td>  
  16.                     <td>  
  17.                         <input type="password" name="pwd"/>  
  18.                     </td>  
  19.                 </tr>  
  20.                 <tr>  
  21.                     <td colspan="2">  
  22.                         <input type="submit" value="登录"/>  
  23.                     </td>  
  24.                 </tr>  
  25.             </table>  
  26.         </form>  
  27.     </body>  
  28. </html>  

    登入成功页面success.jsp,代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         款待<%=request.getParameter("name") %>,登入成功!  
  7.     </body>  
  8. </html>  

    程序的运转结果图5所示:

图片 5

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

    在jsp2servlet.jsp中,分别采纳request对象,session对象,url,form表单设置须求传递的参数,代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <%  
  7.         session.setAttribute("testSession","Hello session");  
  8.         request.setAttribute("testRequest","Hello request");  
  9.         %>  
  10.         <a href=";  
  11.         <form action="jsp2servlet?action=toServlet" method="post" name="form1">  
  12.             <input type="text" name="username"/>  
  13.             <input type="submit" value="submit"/>  
  14.         </form>  
  15.     </body>  
  16. </html>  

    在Jsp2Servlet中接收jsp页面中传递的参数并将其出示,代码如下:

[java] view plaincopy

 

  1. package com.shi.servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class Jsp2Servlet extends HttpServlet  
  12. {  
  13.     /** 
  14.      * 自动生成 
  15.      */  
  16.     private static final long serialVersionUID = 1L;  
  17.   
  18.     /** 
  19.      * 构造函数 
  20.      */  
  21.     public Jsp2Servlet()  
  22.     {  
  23.         super();  
  24.     }  
  25.       
  26.     /** 
  27.      * 初始化 
  28.      */  
  29.     public void init()  
  30.     {}  
  31.       
  32.     /** 
  33.      * doGet() 
  34.      */  
  35.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  36.     {  
  37.         doPost(request, response);  
  38.     }  
  39.       
  40.     /** 
  41.      * doPost() 
  42.      */  
  43.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  44.     {  
  45.         String strSession = (String)request.getSession().getAttribute("testSession");         
  46.         String strRequest = (String)request.getAttribute("testRequest");          
  47.         String strHref = request.getParameter("hrefAction");          
  48.         String strForm = request.getParameter("action");          
  49.         String username = request.getParameter("username");  
  50.           
  51.         PrintWriter out = response.getWriter();  
  52.         out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");  
  53.         out.println("<html>");  
  54.         out.println("<body>");  
  55.         out.println("保存到session中的内容: "   strSession   "<br>");  
  56.         out.println("保存到request中的内容:"   strRequest   "<br>");  
  57.         out.println("超链接中传递的参数值为:"   strHref   "<br>");  
  58.         out.println("form表单中传送的action值为:"   strForm   "<br>");  
  59.         out.println("form表单内input标签中username的值: "   username   "<br>");  
  60.         out.println("</body>");  
  61.         out.println("</html>");         
  62.     }  
  63.       
  64.     /** 
  65.      * 销毁 
  66.      */  
  67.     public void destroy()  
  68.     {  
  69.         super.destroy();  
  70.     }  
  71. }  

    程序运营结果如图6所示:

图片 6

    servlet无法得到request.setAttribute()中的内容,因为在jsp2servlet.jsp中付出时,生成的贰个新的request,因此不恐怕取到jsp页面中request.setAttribute()中装置的值。

 

[html] view plain copy 图片 7图片 8

三、Servlet传值给Servlet
1、间接跳转(要是变量num已经定义)
resp.sendRedirect("taocan.do?username=" username);

    3.从servlet到jsp页面中传递参数

    从servlet到jsp页面传递参数,能够行使U景逸SUVL,request对象,session对象,新建Servlet2Jsp.java,代码如下:

[java] view plaincopy

 

  1. package com.shi.servlet;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. public class Servlet2Jsp extends HttpServlet  
  11. {  
  12.     /** 
  13.      * 自动生成 
  14.      */  
  15.     private static final long serialVersionUID = 1L;  
  16.   
  17.     /** 
  18.      * 构造函数 
  19.      */  
  20.     public Servlet2Jsp()  
  21.     {  
  22.         super();  
  23.     }  
  24.       
  25.     /** 
  26.      * 初始化 
  27.      */  
  28.     public void init()  
  29.     {}  
  30.       
  31.     /** 
  32.      * doGet() 
  33.      */  
  34.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  35.     {  
  36.         doPost(request, response);  
  37.     }  
  38.       
  39.     /** 
  40.      * doPost() 
  41.      */  
  42.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  43.     {  
  44.         String url = "result.jsp?first=传递第八个参数&second=传递第1个参数";  
  45.         String strRequest = "request传值";  
  46.         String strSession = "session传值";  
  47.         request.setAttribute("strRequest", strRequest);  
  48.         request.getSession().setAttribute("strSession", strSession);  
  49.           
  50.         /** 
  51.          * 客户端跳转:功用低 
  52.          * session范围属性,url中的参数会传递下去,request范围属性不传递 
  53.          */  
  54.         //response.sendRedirect(url);  
  55.           
  56.         /** 
  57.          * 服务器端跳转:常用,作用高 
  58.          * request范围属性,session范围属性,url中的参数会传递 
  59.          */  
  60.         request.getRequestDispatcher(url).forward(request, response);  
  61.     }  
  62.       
  63.     /** 
  64.      * 销毁 
  65.      */  
  66.     public void destroy()  
  67.     {  
  68.         super.destroy();  
  69.     }  
  70. }  

    在web.xml中布局该servlet后,新建参数接收页result.jsp,代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <%  
  7.         String strURL = request.getParameter("first");  
  8.         String strRequest = (String)request.getAttribute("strRequest");  
  9.         String strSession = (String)request.getSession().getAttribute("strSession");  
  10.           
  11.         %>  
  12.         <p>  
  13.             URAV4L中得到的属性值为:<%=strULX570L%>  
  14.         </p>        
  15.         <p>  
  16.             request中拿走的属性值为:<%=strRequest%>  
  17.         </p>  
  18.         <p>  
  19.             session中获得的属性值为:<%=strSession%>  
  20.         </p>  
  21.     </body>  
  22. </html>  

    程序的运维结果如图7所示:

图片 9

 

<servlet>
<servlet-name>taocan</servlet-name>
<servlet-class>(对应包名 类名)TaocanServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>taocan</servlet-name>
<url-pattern>/taocan.do</url-pattern>
</servlet-mapping>

    4.从三个servlet到另三个servlet时的参数传递

    (1)通过超链接和表单传递数据

    通过超链接前面给定要传递参数的值,但长度有限量,通过超链接和表单传递数据,使用request.getParamter()方法,代码如下:

[java] view plaincopy

 

  1. package com.shi.servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class ServletA extends HttpServlet  
  12. {  
  13.     /** 
  14.      * 自动生成 
  15.      */  
  16.     private static final long serialVersionUID = 1L;  
  17.   
  18.     /** 
  19.      * 构造函数 
  20.      */  
  21.     public ServletA()  
  22.     {  
  23.         super();  
  24.     }  
  25.       
  26.     /** 
  27.      * 初始化 
  28.      */  
  29.     public void init()  
  30.     {}  
  31.       
  32.     /** 
  33.      * doGet() 
  34.      */  
  35.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  36.     {  
  37.         doPost(request, response);  
  38.     }  
  39.       
  40.     /** 
  41.      * doPost() 
  42.      */  
  43.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  44.     {  
  45.         response.setContentType("text/html");  
  46.         PrintWriter out = response.getWriter();  
  47.         String name = "hello, servlet";  
  48.         out.println("<html>");  
  49.         out.println("<body>");  
  50.         /** 
  51.          * 超链接 
  52.          */  
  53.         out.println("<a href='ServletB?name=" name "'>this is a test</a>");  
  54.         /** 
  55.          * 表单 
  56.          */  
  57.         out.println("<form action='ServletB' method='post'>");          
  58.         out.println("用户名:");  
  59.         out.println("<input type='text' name='username'>");  
  60.         out.println("<input type='submit' vlue='提交'>");  
  61.         out.println("</form>");  
  62.         out.println("</body>");  
  63.         out.println("</html>");  
  64.         out.flush();  
  65.   
  66.     }  
  67.       
  68.     /** 
  69.      * 销毁 
  70.      */  
  71.     public void destroy()  
  72.     {  
  73.         super.destroy();  
  74.     }  
  75. }  

    接收servlet中传递参数的代码如下:

[java] view plaincopy

 

  1. package com.shi.servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class ServletB extends HttpServlet  
  12. {  
  13.     /** 
  14.      * 自动生成 
  15.      */  
  16.     private static final long serialVersionUID = 1L;  
  17.   
  18.     /** 
  19.      * 构造函数 
  20.      */  
  21.     public ServletB()  
  22.     {  
  23.         super();  
  24.     }  
  25.       
  26.     /** 
  27.      * 初始化 
  28.      */  
  29.     public void init()  
  30.     {}  
  31.       
  32.     /** 
  33.      * doGet() 
  34.      */  
  35.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  36.     {  
  37.         doPost(request, response);  
  38.     }  
  39.       
  40.     /** 
  41.      * doPost() 
  42.      */  
  43.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  44.     {  
  45.         String name = request.getParameter("name");  
  46.         String username = request.getParameter("username");  
  47.   
  48.           
  49.         response.setContentType("text/html;charset=gb2312");  
  50.         PrintWriter out = response.getWriter();  
  51.         out.println("<html>");  
  52.         out.println("<body>");  
  53.         out.println("超链接传递的参数值为:"   name);  
  54.         out.println("form表单中付出的用户名叫:"   username);  
  55.         out.println("</body>");  
  56.         out.println("</html>");  
  57.         out.flush();  
  58.     }  
  59.       
  60.     /** 
  61.      * 销毁 
  62.      */  
  63.     public void destroy()  
  64.     {  
  65.         super.destroy();  
  66.     }  
  67. }  

    程序运转结果如图8所示:

图片 10

    (2)使用setAttribute()和getAttribute()方法传递参数

    设置参数的ServletA代码如下:

[java] view plaincopy

 

  1. package com.shi.servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class ServletA extends HttpServlet  
  12. {  
  13.     /** 
  14.      * 自动生成 
  15.      */  
  16.     private static final long serialVersionUID = 1L;  
  17.   
  18.     /** 
  19.      * 构造函数 
  20.      */  
  21.     public ServletA()  
  22.     {  
  23.         super();  
  24.     }  
  25.       
  26.     /** 
  27.      * 初始化 
  28.      */  
  29.     public void init()  
  30.     {}  
  31.       
  32.     /** 
  33.      * doGet() 
  34.      */  
  35.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  36.     {  
  37.         doPost(request, response);  
  38.     }  
  39.       
  40.     /** 
  41.      * doPost() 
  42.      */  
  43.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  44.     {  
  45.         /** 
  46.          * setAttribute()和getAttribute() 
  47.          */  
  48.         String data = "This is a test, we need more test for this";  
  49.         request.setAttribute("strAtt", data);  
  50.         request.getRequestDispatcher("/ServletB").forward(request, response);  
  51.     }  
  52.       
  53.     /** 
  54.      * 销毁 
  55.      */  
  56.     public void destroy()  
  57.     {  
  58.         super.destroy();  
  59.     }  
  60. }  

    获取参数的ServletB代码如下:

[java] view plaincopy

 

  1. package com.shi.servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class ServletB extends HttpServlet  
  12. {  
  13.     /** 
  14.      * 自动生成 
  15.      */  
  16.     private static final long serialVersionUID = 1L;  
  17.   
  18.     /** 
  19.      * 构造函数 
  20.      */  
  21.     public ServletB()  
  22.     {  
  23.         super();  
  24.     }  
  25.       
  26.     /** 
  27.      * 初始化 
  28.      */  
  29.     public void init()  
  30.     {}  
  31.       
  32.     /** 
  33.      * doGet() 
  34.      */  
  35.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  36.     {  
  37.         doPost(request, response);  
  38.     }  
  39.       
  40.     /** 
  41.      * doPost() 
  42.      */  
  43.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  44.     {  
  45.         String strAtt = (String)request.getAttribute("strAtt");  
  46.           
  47.         response.setContentType("text/html;charset=gb2312");  
  48.         PrintWriter out = response.getWriter();  
  49.         out.println("<html>");  
  50.         out.println("<body>");  
  51.         out.println("getAttribute()获得的数据值为:"   strAtt);       
  52.         out.println("</body>");  
  53.         out.println("</html>");  
  54.         out.flush();  
  55.     }  
  56.       
  57.     /** 
  58.      * 销毁 
  59.      */  
  60.     public void destroy()  
  61.     {  
  62.         super.destroy();  
  63.     }  
  64. }  

    程序的运营结果如图9所示:

图片 11

  

    5.JSP页面跳转形式

    (1)RequestDispatcher.forward()

    在服务器端起效果,当使用forward()时,Servlet engine传递HTTP央求从当下的Servlet or JSP到别的一个Servlet,JSP或普通HTML文件,即你的form提交至a.jsp,在a.jsp用到了forward()重定向到b.jsp,此时form提交的有所新闻在b.jsp都能够获取,参数自动传递。但forward()不可能重定向至有frame的jsp文件,能够重定向至有frame的html文件,相同的时间forward()无法再前边带参数传递,例如servlet?name=tom,那样不行,能够程序内经过response.setAttribute("name",name)来传至下三个页面。

    重定向后浏览器地址栏U奥迪Q5L不改变。

    通常在Servlet中使用,不在jsp中使用。

 

    (2)response.sendRedirect()

    在用户的浏览器端职业,sengRedirect()能够带参数字传送递,例如servlet?name=tom传至下个页面,同期它能够重定向至不一样的主机上,sendRedirect()可以重定向至有frame的jsp文件。

    重定向后在浏览器地址栏上会出现重定向页面的U福睿斯L。

    上述二种方法代码见图7。

    由于response是jsp页面中的隐含对象,故在jsp页面中能够用response.sendRedirect()直接达成重一贯。

    注意:

    ①.施用response.sendRedirect()时,前边不能够有HTML输出

    那实际不是纯属的,不可能有HTML输出其实是指不能够有HTML被送到了浏览器。事实上以往的Server都有cache机制,一般在8K(JSP SEEvoqueVE智跑),那意味,除非你关闭了cache,可能您用out.flush()强制刷新,那么在利用sendRedirect此前,有一丢丢的HTML输出也是同意的。

    ②.response.sendRedirect()之后,应该紧跟一句return

    大家早已清楚response.sendRedirect()是通过浏览器来做转账的,所以独有在页面处理到位后,才会有实在的动作。既然你早就要做转账了,那么前面包车型地铁出口还会有啥含义吗?并且有极大希望会因为背后的出口导致转向失败。

    比较:

    ①.Dispatcher.forward()是容器中央调整制权的转折,在客户端浏览器地址栏中不会出现转载后的地点

    ②.response.sendRedirect()则是截然的跳转,浏览器将会赢得跳转的地点,并再次发送央求链接。那样,从浏览器的地址栏中能够观望跳转后的链接地址。

   后边一个更高效,在前端能够满意急需时,尽量选取RequestDispatcher.forward()方法。

    注:在多少意况下,譬喻,需求跳转到八个其余服务器上的能源,则必须利用HttpServletResponse.sendRedirect()方法。

 

    (3)<jsp:forward page=""/>

    它的背后部总部分是由RequestDispatcher来完成的,因而它包括RequestDispatcher.forward()方法的印记。

    假设在前头有相当多出口,前边的出口已使缓冲区满,将自动输出至客户端,那么该语句将不起成效,那或多或少应有特别注意。

    其余要专注:它无法退换浏览器地址,刷新的话会形成重复提交。

    测量检验代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <head>  
  6.         <link rel="stylesheet" type="text/css" href="css/style.css">  
  7.     </head>  
  8.     <body>  
  9.         <jsp:forward page="UpdateServlet">  
  10.             <jsp:param value="list" name="action" />  
  11.         </jsp:forward>  
  12.     </body>  
  13. </html>  

    程序运转结果如图10所示:

图片 12

    (4)修改HTTP header的Location属性来重定向

    通过设置直接改造地址栏来兑现页面包车型客车重定向。

    索引页1.jsp代码之类:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <%  
  7.         response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);  
  8.         String newLocn = "2.jsp";  
  9.         response.setHeader("Location",newLocn);  
  10.         %>  
  11.     </body>  
  12. </html>  

    转向页2.jsp代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         从1.jsp跳转至此页  
  7.     </body>  
  8. </html>  

    程序运营结果如图11所示:

图片 13

   

    (5)JSP中实现在某页面停留若干秒后,自动重定向到另一页面

    在jsp文件中,上面包车型客车代码:

[java] view plaincopy

 

  1. <meta http-equiv="refresh" content="5; url=target.jsp"  

    含义是:在5秒后正在浏览的页面将会自动成为target.jsp页。代码中5为刷新的延迟时间,以秒为单位。target.jsp为您想转向的靶子页,若为本页则自动刷新本页。

    由上可见,能够通过setHeader来完成某页面停留若干秒后,自动重定向到另一页面。

    索引页5_1.jsp代码之类:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         <%  
  7.         String content = "5; url=5_2.jsp";  
  8.         response.setHeader("REFRESH",content);        
  9.         %>  
  10.         5_1.jsp页面,5秒后转向5_2.jsp页面。  
  11.     </body>  
  12. </html>  

    转向页5_2.jsp代码如下:

[java] view plaincopy

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <body>  
  6.         从5_1.jsp转到的页面  
  7.     </body>  
  8. </html>  

    程序运维结果如下:

图片 14

 

 

 

    参照他事他说加以考察资料:

    [1].三种JSP页面跳转情势 http://developer.51cto.com/art/200902/109939.htm

  1. <!--  j1与j2为链接关系-->  
  2.   <form  method="post" action="j3.jsp">  
  3.     用户名:<input type="text" name="username">  
  4.       <input type="submit" name="submit" value="提交">  
  5. </form>  

 

 

[html] view plain copy 图片 15图片 16

java片段代码,servlet只好接受 session.setAttribute("testSession","Hello session")的从头到尾的经过,而接不到 request的内
容。在 servlet里用 request.getSession().getAttribute("testSession")获取 session内容。

11. jsp与servlet之间页面跳转及参数字传送递实例

分类: Java Web2013-07-17 16:24 16461人阅读 评论(12) 收藏 举报

jsp servlet传递参数

 

目录(?)[-]

  1.     1从贰个jsp页面跳转到另三个jsp页面时的参数字传送递
  2.     2jsp页面传递参数给servlet
  3.     3从servlet到jsp页面中传送参数
  4.     4从三个servlet到另叁个servlet时的参数字传送递

 

的话在j2.jsp中通过request.getParameter("username")方法来赢得乞请参数username:

而JSP的状态是Java和HTML能够组合成贰个增添名叫.jsp的公文。JSP侧重于视图,Servlet首要用以调整逻辑。

getAttribute:用于服务器端重定向时,即在sevlet中运用了forward函数,或struts中央银行使了mapping.findForward。getAttribute只能接受程序用setAttribute传过来的值。

1.request.getRequestDispatcher()是伸手转载,前后页面分享叁个request,是在劳动器端运行;
Response.sendRedirect()是经过向客户浏览器发送命令来成功,跳转到另三个新的页面.
所以RequestDispatcher.forward()对于浏览器来讲是“透明的”;
而HttpServletResponse.sendRedirect()则不是。

 

JSP传值给Servlet有两种方式:Form表单传值,url传值,别的艺术传值,以下使用中暗中认可使用了EL表明式。

j1.jsp月j3.jsp为链接关系,j3.jsp与j2.jsp为转发关系

二、Servlet传值给Jsp

本文由ca88发布,转载请注明来源

关键词: ca88网址 Java_web JSP