jsp与servlet传值相关问题

来源:互联网 发布:linux 进程启动时间 编辑:程序博客网 时间:2024/05/17 08:44

jsp与servlet传值等问题

标签: servlet jsp


好看

在学习servlet的时候遇到些问题,在这里记录一下

jsp传值给servlet,有三种方式:

. form表单提交
. url传值
. java代码传值

form表单

JSP页面:

<input type="text" name="name" value="name"/>

在程序中如下:

ServletRequest requestString name=request.getParameter("name");

可获取jsp传的name

url

<a>标签的 href属性与 <form>标签的 action属性的值一样可以在url上带参数传值: “loginServlet?name=wang”,在 servlet同样用 request.getParameter(“name”)获取;

java代码

java片段代码,servlet只能接到作用域更大的session: session.setAttribute(“name”,”wang”)的内容,而接不到 request的内容。在 servlet里用 request.getSession().getAttribute(“name”)获取 session内容。

servlet给jsp页面传值

一般有两种方法:

. 重定向
. url转发

重定向

具体实现如下:
因为重定向是服务器重新发送一个request请求,所以不能通过request.getAttribute()来接收参数,也可以通过两种方式:

. 在地址后面传递参数的方式
. session方式

在地址后面传递参数的方式:

java代码:

String code = "10002";resp.sendRedirect("login.jsp?code=" + code);

jsp页面:

<% String code = request.getParameter("code");%>

session方式

java代码:

req.getSession().setAttribute("code",code);resp.sendRedirect("login.jsp");

jsp页面:

<%String code= (String) session.getAttribute("code");%>

区别:

作用域不同,request只在一次请求里有效,session在整个会话都有效

url转发

具体实现如下:

java代码:

 request.setAttribute( "name ","name");  request.getRequestDispatcher( "login.jsp").forward(request,response); 

jsp页面:

<%String   s   =(String)request.getAttribute( "name ");%>

jsp页面就可以取出Servlet的值。

jsp之间传值

两个jsp之间传值一般有form表单、url加参数、java代码session传值几种方法,和上面一样,不赘述;

原因

  1. 重定向是服务端重新发送一个请求,是两个请求request:
    客户端(request1)—>服务器(返回页面1)—>客户端(request2)—>服务器(返回页面2)—>客户端
    两个request不同,传递信息可以用session来实现。

  2. url转发是一个请求,所以可以传递封装进request当中的值:
    客户端(request)—>服务器(页面1forward)—>服务器(返回页面2)—>客户端
    forward的页面跳转是服务端来处理的所以是同一个request

0 0
原创粉丝点击