servlet + jsp的一个小例子,简单模拟前台与后台之间的数据交互

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