Servlet与JSP 之间的传值有两种情况:JSP -> Servlet, Servlet -> JSP。

  通过对象 request和 session (不考虑 application)完成传值。

  一、JSP -> servlet

  JSP页面有3种方法向 servlet传值: form表单、URL

  <!-- JSP page -->

  ...

  <%......

  session.setAttribute("testSession","Hello session");

  reqeust.setAttribute("testRequest","Hello request");

  %>

  <a href="JspServlet?action=toServlet">点击</a>

  <form action="JspServlet?action=toServlet" method="post" name="form">

  <input name="username" type="test" />

  <input type="submit" value="submit">

  </form>

  ...

  1、对于该JSP页面 form表单的内容,如 <input>标签,在 servlet可用 request.getParameter("username");获取。

  2、URL:比如这里的 <a>标签的 href属性与 <form>标签的 action属性的值
"JspServlet?action=toServlet",在 servlet同样用
request.getParameter("action")获取;所要注意的是这里的 url 要和 servlet在web.xml里的
<url-pattern>标签的路径所对应。这部分后面会提到。

  3、java片段代码,servlet只能接到 session.setAttribute("testSession","Hello
session")的内容,而接不到 request的内容。在 servlet里用
request.getSession().getAttribute("testSession")获取 session内容。

  二、Servlet

  1、关于 servlet,首先要提到它在 web.xml里的注册内容,如

  <servlet-name>JspServlet1</servlet-name>

  <servlet-class>com.demo.JspServletDemo</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>JspServlet1</servlet-name>

  <url-pattern>/JspServlet</url-pattern>

  </servlet-mapping>

  <servlet-name>JspServlet2</servlet-name>

  <servlet-class>com.demo.JspServletDemo</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>JspServlet2</servlet-name>

  <url-pattern>/admin/JspServlet</url-pattern>

  </servlet-mapping>

  假如 project name 是 jsp2servlet,则该 project根目录的 Context是 /jsp2servlet,在地址栏里显示是 http://localhost:8080/jsp2servlet/;

  在 project 根目录下有 admin目录,对应的 Context是/admin/jsp2servlet,在地址栏里显示是 http://localhost:8080/jsp2servlet/admin,

  在这两个目录下的 jsp 都想转到 com.demo.JspServletDemo类做处理,这时的 url需要在 web.xml注册两次。

  1)在 http://localhost:8080/jsp2servlet/ 目录下的 jsp 页面 JspServlet1,url应写为 "JspServlet"

  2)在 http://localhost:8080/jsp2servlet/admin/ 目录下的 jsp 页面访问 JspServlet2,url应写为 "admin/JspServlet"

  2、在 servlet直接用 request对象,得到发送来的请求内容;用 request.getSession(),得到 session对象,从而得到会话内容。

  这里的 request.getSession()的参数为 boolean 类型,该方法意思可理解为:

  session可以认为是每一个IE进程对应一个会话(新开一个IE进程就可以对应两个会话的),getSession都是返回当前用户的会话对象,参数的区别在于:

  参数为true (默认),则如果“当前用户的会话对象”为空(第一次访问时)则创建一个新的会话对象返回;

  参数为false,则如果“当前用户的会话对象”为空,则返回 null (即不自动创建会话对象)。

  利用这个方法可以判断 session是否过期,如下:

  if(request.getSession(false)==null)

  System.out.println("Session has been invalidated!");

  else

  System.out.println("Session is active!");

  三、Servlet -> JSP

  从 servlet转到 jsp不外乎两种方法,重定向 和 url转发

  1、重定向 ( Redirect):是路径的跳转,内容和 url都改变。不允许带 request参数( session参数可以),即不允许在
servlet里给 request对象使用setAttribute方法传给下一页面。在 servlet里使用
response.sendRedirect(url) 方法。注意这里的 url前不带斜线 /,如
response.sendRedirect(”test.jsp“)

  2、url转发 (
Forward):是页面的跳转,页面内容发生改变,url不变。可以带 request和 session参数。在 servlet里使用
getServletConfig().getServletContext().getRequestDispatcher(url).forward(request,
response)。而这里的 url前需要带斜线
/,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request,
response)

String fr="good well";
  request.setAttribute("test", fr);
  RequestDispatcher de=request.getRequestDispatcher("/test.jsp");
   de.forward(request, response);

原文连接:Servlet与jsp间传值的问题

【jsp】Servlet与jsp之间的传值的更多相关文章

  1. JSP Servlet SQL 三者之间数据传递

    前言: 最近一直在做WEB开发,现总结一下这一段时间的体会和感触. 切记,web开发重点在于前台数据交互,页面美化而不要太沉溺于底层数据. 浏览器时代来到,向我们召唤出更炫.更简洁.更方便.更大气的网 ...

  2. 解决Jsp与Java后台之间url传值中文乱码问题

    JSP页面中,由JavaScript拼接url时,对于中文名称变量应该加上encodeURIComponent方法,对中文进行十六进制编码. 例如: url = /com/xxx/B.jsp?chin ...

  3. JSP/Servlet(一)

    JSP/Servlet(一)   Web应用和web.xml文件: 一.构建Web应用: 1.在任意目录下创建一个文件夹. 2.在第1步所建的文件夹内建一个WEB-INF文件夹(注意大小写). 3.进 ...

  4. JSP+Servlet+javabean+mysql实现页面多条件模糊查询

    需求: 一般列表页上面会有一个查询框,有各种的查询条件组合,一般都采用模糊查询方式 ,以下以自己做的实例来说明一下实现方法: 需要实现的界面原型:要满足条件: 1.单选分类,点GO按扭 2.单独输入标 ...

  5. JSP和servlet之间的传值(总结的很全面)

    转自:http://blog.csdn.net/ssy_shandong/article/details/9328985 1.从一个jsp页面跳转到另一个jsp页面时的参数传递     (1)使用re ...

  6. Servlet与JSP之间相互传值问题

    一.JSP向Servlet传值 JSP向Servlet传值的方式有三种:URL后面跟参数.form表单提交.在JSP内置对象Session设置值. URL后面跟参数 JSP文件:<a href= ...

  7. Servlet与jsp间的传值问题

    Servlet与JSP 之间的传值有两种情况:JSP -> Servlet, Servlet -> JSP.通过对象 request和 session (不考虑 application)完 ...

  8. JSP Servlet之间交换数据

    摘自:<轻量级Java EE企业应用实战>第三版 对于每次客户端请求而言,web服务器大致需要完成以下步骤: 1.启动单独线程 2.使用I/O流读取用户的请求参数 3.从请求数据中解析参数 ...

  9. servlet及jsp之间的请求转发

    1.servlet间的请求转发 <dependencies> <dependency> <groupId>javax.servlet</groupId> ...

随机推荐

  1. Python练习环境搭建-引入预定义数据

    学习Python,有大量的需要在交互式环境下练习的项目,这时数据来源就很麻烦了,手工输入太慢,写到程序中,运行方便,但各种实验又不方便.昨天试了半天也无法从vscode完美地跳出到交互环境. 今天反过 ...

  2. Docker worker nodes shown as “Down” after re-start

    After docker is shutdown, the worker node  changes its status to Down, but availability remains at A ...

  3. [Docker] Driver Bridge network for linking containers

    In previous postwe have seen how to link two container together by using `--link`: # docker run -d - ...

  4. Python requests如何将第一个请求得到的 cookie 通过 POST 提交给第二个请求

    #coding=utf-8 import requests import json url_login, url_test = "http://192.168.0.162/login&quo ...

  5. C++ 构造与析构的执行顺序

    1.代码如下:class A{public: int _Id; A():_Id(0) { printf("A[%d]\n",_Id); } ~A() { printf(" ...

  6. php代码收集

    thinkphp <?php class HekaAction extends BaseAction{ public function index(){ require_once './wang ...

  7. 使用Chrome保存网页为mht文件

    一直在使用chrome浏览器,但由于需要将部分网页保存为mht文件,却发现chrome默认不支持.chrome浏览器默认支持2种:单独的html文件,全部: 万能的chrome怎么可能保存不了mht? ...

  8. uni-app - 上传图片组件

    2018-12-29 更新1.0  2019-01-08 更新1.1 2019-01-29 更新1.3   重大更新 插件地址: http://ext.dcloud.net.cn/plugin?id= ...

  9. 安装 LUA

    为了以后方便,记录一下步骤 1.yum install readline-devel 2.wget http://www.lua.org/ftp/lua-5.1.4.tar.gz 3.cd lua-5 ...

  10. SQL Server中float转字符串进度丢失

    写了个函数接受varchar的参数, 但实际传入的是float, 但是转换后舍入成2位小数了, 单独执行没问题, 从table中查询输出就有问题 REF SELECT CAST(CAST(字段 AS ...