`
umgsai
  • 浏览: 103379 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

总结JSP与servlet之间的传值

 
阅读更多

  1. JSP与servlet之间的传值有两种情况:JSP->servlet,servlet->JSP。
  2.   通过对象request和session(不考虑application)完成传值。
  3.   一、JSP->servlet
  4.   JSP页面有3种方法向servlet传值:form表单、URL、其他
  5.   <!--JSPpage-->
  6.   ...
  7.   <%......
  8.   session.setAttribute("testSession","Hellosession");
  9.   reqeust.setAttribute("testRequest","Hellorequest");
  10.   %>
  11.   <ahref="JspServlet?action=toServlet">clickme</a>
  12.   <formaction="JspServlet?action=toServlet"method="post"name="form">
  13.   <inputname="username"type="test"/>
  14.   <inputtype="submit"value="submit">
  15.   </form>
  16.   ...
  17.   1、对于该JSP页面form表单的内容,如<input>标签,在servlet可用request.getParameter("username");获取。
  18.   2、URL:比如这里的<a>标签的href属性与<form>标签的action属性的值"JspServlet?actionaction=toServlet",在servlet同样用request.getParameter("action")获取;所要注意的是这里的url要和servlet在web.xml里的<url-pattern>标签的路径所对应。这部分后面会提到。
  19.   3、jav段代码,servlet只能接到session.setAttribute("testSession","Hellosession")的内容,而接不到request的内容。在servlet里用request.getSession().getAttribute("testSession")获取session内容。
  20.   二、Servlet
  21.   1、关于servlet,首先要提到它在web.xml里的注册内容,如
  22.   <servlet-name>JspServlet1</servlet-name>
  23.   <servlet-class>com.demo.JspServletDemo</servlet-class>
  24.   </servlet>
  25.   <servlet-mapping>
  26.   <servlet-name>JspServlet1</servlet-name>
  27.   <url-pattern>/JspServlet</url-pattern>
  28.   </servlet-mapping>
  29.   <servlet-name>JspServlet2</servlet-name>
  30.   <servlet-class>com.demo.JspServletDemo</servlet-class>
  31.   </servlet>
  32.   <servlet-mapping>
  33.   <servlet-name>JspServlet2</servlet-name>
  34.   <url-pattern>/admin/JspServlet</url-pattern>
  35.   </servlet-mapping>
  36.   假如projectname是jsp2servlet,则该project根目录的Context是/jsp2servlet,在地址栏里显示是http://localhost:8080/jsp2servlet/;
  37.   在project根目录下有admin目录,对应的Context是/admin/jsp2servlet,在地址栏里显示是http://localhost:8080/jsp2servlet/admin,
  38.   在这两个目录下的jsp都想转到com.demo.JspServletDemo类做处理,这时的url需要在web.xml注册两次。
  39.   1)在http://localhost:8080/jsp2servlet/目录下的jsp页面JspServlet1,url应写为"JspServlet"
  40.   2)在http://localhost:8080/jsp2servlet/admin/目录下的jsp页面访问JspServlet2,url应写为"admin/JspServlet"
  41.   2、在servlet直接用request对象,得到发送来的请求内容;用request.getSession(),得到session对象,从而得到会话内容。
  42.   这里的request.getSession()的参数为boolean类型,该方法意思可理解为:
  43.   session可以认为是每一个IE进程对应一个会话(新开一个IE进程就可以对应两个会话的),getSession都是返回当前用户的会话对象,参数的区别在于:
  44.   参数为true(默认),则如果“当前用户的会话对象”为空(第一次访问时)则创建一个新的会话对象返回;
  45.   参数为false,则如果“当前用户的会话对象”为空,则返回null(即不自动创建会话对象)。
  46.   利用这个方法可以判断session是否过期,如下:
  47.   if(request.getSession(false)==null)
  48.   System.out.println("Sessionhasbeeninvalidated!");
  49.   else
  50.   System.out.println("Sessionisactive!");
  51.   三、Servlet->JSP
  52.   从servlet转到jsp不外乎两种方法,重定向和url转发
  53.   1、重定向(Redirect):是路径的跳转,内容和url都改变。不允许带request参数(session参数可以),即不允许在servlet里给request对象使用setAttribute方法传给下一页面。在servlet里使用response.sendRedirect(url)方法。注意这里的url前不带斜线/,如response.sendRedirect(”test.jsp“)
  54.   2、url转发(Forward):是页面的跳转,页面内容发生改变,url不变。可以带request和session参数。在servlet里使用getServletConfig().getServletContext().getRequestDispatcher(url).forward(request,response)。而这里的url前需要带斜线/,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request,response)

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/702555

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics