昨天有一个群友,估计是初学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/天,具体规则查看活动详情