昨天有一个群友,估计是初学javaweb吧,他说怎么把封装好的map给前台,最后在我细问之下,原来他就是使用简单的servlet,前台用jstl获取。想想这也是简单的,所以我也就自己复习了一下
servlet与jsp的交互,需要考虑的问题很多,比如乱码问题,本例就不做讨论哈
首先我们创建一个servlet,并模拟我们获取到了的数据,并且进行了map封装
public class UserInfoTest extends HttpServlet{ /** * */ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request,HttpServletResponse response){ doPost(request,response); } public void doPost(HttpServletRequest request,HttpServletResponse response){ System.out.println(11111); //获得用户名和密码 String username = request.getParameter("username"); String password = request.getParameter("password"); Map map = new HashMap(); HttpSession session = request.getSession(); //模拟到数据库查询用户名和密码,让后取得数据 if(username != null && password != null){ //假定我们已经取得数据,现在是在将数据封装在map中 map.put("username", username); map.put("password", password); map.put("age", 23); map.put("sex", "男"); map.put("phone", "13566668888"); //使用session存放userid session.setAttribute("userid",5); //使用request存放map request.setAttribute("maps", map); }else{ request.setAttribute("maps", null); session.setAttribute("userid", ""); } System.out.println(11111); try { request.getRequestDispatcher("/userinfo.jsp").forward(request, response); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
以上代码,我们模拟了后台接收到用户名和密码,并且不为空时就将一些数据保存在map中,而map又保存在了request中,还有一项userid保存在了session中
需要说明的是如果您最后使用response.sendRedirect("XXXXXX"); 那么您的数据将会丢失
因此我们这里使用的是转发getRequestDispatcher
然后,我们配置我们的web.xml吧
<!-- 配置userinfotext --> <servlet> <servlet-name>UserInfo</servlet-name> <servlet-class>com.servlet.UserInfoTest</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserInfo</servlet-name> <url-pattern>/userinfo</url-pattern> </servlet-mapping>
再创建一个jsp页面吧,这个jsp的文件名就是 userinfo.jsp,内容如下:
<body> 获得userid:${sessionScope.userid } <br> 获得maps:<br> <c:forEach items="${maps}" var="user" > ${user.key} >>>> ${user.value} <br> </c:forEach> </body>
${maps} 就是获取request中maps的数据
最后我们在启动服务,在浏览器运行我们的servlet就得到了我们的数据了
http://xxx.xxx.xxx/Onejsp/userinfo?username=%E5%BC%A0%E6%AC%A2&password=123456结果如下
获得userid:5获得maps:
phone >>>> 13566668888
sex >>>> 男
username >>>> 张欢
age >>>> 23
password >>>> 123456
本事例演示的是get提交,您也可以试试post提交。
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情