jsp与servlet传值等问题
标签: servlet jsp
在学习servlet的时候遇到些问题,在这里记录一下
jsp传值给servlet,有三种方式:
. form表单提交
. url传值
. java代码传值
form表单
JSP页面:
<input type="text" name="name" value="name"/>
在程序中如下:
ServletRequest request;
String 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传值几种方法,和上面一样,不赘述;
原因
重定向是服务端重新发送一个请求,是两个请求request:
客户端(request1)—>服务器(返回页面1)—>客户端(request2)—>服务器(返回页面2)—>客户端
两个request不同,传递信息可以用session来实现。url转发是一个请求,所以可以传递封装进request当中的值:
客户端(request)—>服务器(页面1forward)—>服务器(返回页面2)—>客户端
forward的页面跳转是服务端来处理的所以是同一个request