jsp与Servlet之间传值

在写项目中经常会把后台服务端的数据传到前台页面上。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代码,注意要用转发