在写项目中经常会把后台服务端的数据传到前台页面上。jsp与Servlet之间传值分为四种,jsp向Servlet传值,反过来Servlet向jsp页面传值,jsp之间传值,Servlet之间传值。
Servlet向jsp页面传值:
一、
利用request这个对象在Servlet中设置键值对,在jsp页面通过键获取值,
request.setAttribute("key", value);key代表键,是一个字符串,jsp页面通过这个字符串可以获取值,注意key一定要一致
<% String s =(String)request.getAttribute( "key "); %>注意通过request获取到的值是Object类型的需要强转,还有就是用这种方法不能用重定向到jsp页面,要用转发
request.getRequestDispatcher("/…….jsp").forward(request, response);
二、
利用跳转Servlet:
response.sendRedirect("/…….jsp?username="+username);jsp页面:
<% String s = (String) request.getParameter("username"); %>
jsp页面向Servlet传值:
一、
通过超链接传值,jsp页面:
<a href="AServlet?password=传输内容">文本</a>Servlet代码:
String d = request.getParameter("password");
二、
通过form表单传值:
jsp页面:
<form action="LoginServlet"> <input type="text" name="username"> <input type="text" name="password"> <input type="submit" value="登录"> </form>
Servlet代码:
String username = request.getParameter("username"); String password = request.getParameter("password");
三、
还可以通过java代码传值,不建议这么写,在后期维护很麻烦
Servlet向Servlet之间传值:
一、
通过session对象,一个浏览器就是一个会话,使用两个浏览器无法获得值
HttpSession session = request.getSession(); session.setAttribute("user", user);先获取session对象在把值通过键值对传输
HttpSession session = request.getSession(); User user = (User) session.getAttribute("user");
二、
直接跳转,和Servlet向jsp页面传值一样在跳转文件后面添加值
response.sendRedirect("BServlet?username=qu");接收:
request.getParameter("username");
jsp向jsp传值:
传输:
<% request.setAttribute("username","username"); %> <jsp:forward page="demo2.jsp"/>接收:
<% String username = (String)request.getAttribute("username"); %>其实用的是java代码,注意要用转发