表单中获取数据及cookie的一些方法

一:从表单中获取数据
public class Demo01 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
  //防止请求过来的数据乱码(解决post请求乱码)
    request.setCharacterEncoding("UTF-8");                
    //获取表单请求过来的参数
    //传入的参数  就是表单中 name标签
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    System.out.println(username+" "+password);		

}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}

二:利用beanuitls封装一个对象
public class Demo02 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	response.setContentType("text/html;charset=UTF-8");
	request.setCharacterEncoding("UTF-8");
				
	//利用beanuitls直接将请求的参数封装成一个对象
	//参数2 从请求中获取的参数的map集合
	//注意:1.使用的实体类对象 必须符合javabean规范
	//    2.实体类的成员变量 要跟获取的参数一样
	//    3.实体类的成员变量名 和 name标签名要相同
	User user=new User();		
	try {
		BeanUtils.populate(user, request.getParameterMap());
		System.out.println(user);
	} catch (IllegalAccessException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (InvocationTargetException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

private void fun4(HttpServletRequest request) {
	//将获取的参数 封装成一个对象
 String username = request.getParameter("username");
    String password = request.getParameter("password");
    String sex = request.getParameter("sex");
    //获取多个值
    String[] hobby = request.getParameterValues("hobby");
    String city = request.getParameter("city");
    //放入对象中
    User user =new User(username, password, sex, hobby, city);
    System.out.println(user);
}

private void fun3(HttpServletRequest request) {
	//获取参数的map集合
	Map<String, String[]> map = request.getParameterMap();
	for (String key  : map.keySet()) {
		String[] values = map.get(key);
		for (String value : values) {
			System.out.println(key+" = "+value);
		}
	}
}

private void fun2(HttpServletRequest request) {
	//获取参数的所有name 
	Enumeration<String> names = request.getParameterNames();
	while (names.hasMoreElements()) {
		System.out.println(names.nextElement());
	}
}

private void fun1(HttpServletRequest request) {
	String username = request.getParameter("username");
    String password = request.getParameter("password");
    String sex = request.getParameter("sex");
    //获取多个值
    String[] hobby = request.getParameterValues("hobby");
    String city = request.getParameter("city");
    System.out.println(username);
    System.out.println(password);
    for (String string : hobby) {
		System.out.println(string);
	}
	System.out.println(city);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
	doGet(request, response);
}

}
三:request域对象 作用范围 只在一次请求中有效
public class Demo03 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	response.setContentType("text/hyml;charset=UTF-8");
	request.setCharacterEncoding("UTF-8");		
	//获取字符流
	PrintWriter writer = response.getWriter();
	request.setAttribute("feifei", "pang");
	//请求包含(一次请求  并且两个页面的响应都会返回给浏览器)
	//获取转发器
	RequestDispatcher dispatcher = request.getRequestDispatcher("/demo04");
	//包含方法
	dispatcher.include(request, response);		
	//响应回浏览器
	writer.write("123");
	System.out.println("是demo03");
}

private void fun2(HttpServletResponse response) throws IOException {
	//测试请求重定向(两次请求 超出request的范围)
	response.sendRedirect("/sh-web-03/demo04");
}

private void fun1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//测试域对象的使用范围
	//请求转发(一次请求)
	//注意  最终响应回浏览器的内容是 转发到的页面的响应
	//在request域中保存值
	request.setAttribute("feifei", "pang");
	//使用request对象 进行请求转发
	//获取请求转发器
	RequestDispatcher dispatcher = request.getRequestDispatcher("/demo04");
	dispatcher.forward(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
	doGet(request, response);
}

}
四:会话技术

  • 指的是客户端(用户/浏览器)和服务端(servlet)进行的交互

  • 一次会话 只有当关闭浏览器时 这次会话算结束

  • 1.客户端技术(浏览器实现) Cookie

  • Cookie使用流程

  •         1.当用户第一次访问服务器时  服务器可以创建一个Cookie出来
    
  •         并且添加到响应中  响应回用户(浏览器)
    
  •         2.当浏览器 接收到 携带了Cookie的响应后   会将cookie保存到本地文件
    
  •        3.当用户再次访问服务器时   会携带着cookie一起去访问  这时服务端拿到cookie可以使用
    
  •     4.默认当浏览器关闭时  会话结束   浏览器销毁保存cookie(可以设置cookie存活时间  时间到  才销毁)
    
  • Cookie的使用

  • 1.每个网站最多可以保存20个cookie到浏览器中
    
  • 2.每个cookie最多只能保存4kb(只能保存小数据)
    
  • 3.每个浏览器最多可以保存300个cookie
    
  • 4.cookie中不能保存中文
    
  • 设置cookie的存活时间

  • setMaxAge 以秒为单位

  • 正值 cookie到时间被销毁

  • 负值 浏览器不会保存cookie 会话结束 直接销毁cookie

  • 0值 立即删除cookie

  • public class Demo04 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType(“text/html;charset=UTF-8”);
    request.setCharacterEncoding(“UTF-8”);

     //从请求中获取cookie
     Cookie[] cookies = request.getCookies();
     if (cookies!=null) {
     	for (Cookie cookie : cookies) {
     		//找出刚才保存的lastTime的cookie
     		if (cookie.getName().equals("lastTime")) {
     			//获取cookie保存的值
     			String value = cookie.getValue();
     			//字符串转long型
     			long time = Long.parseLong(value);
     			//字符串转时间
     			Date date=new Date(time);
     			//将日期对象格式化
     			SimpleDateFormat sdf=new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
     			//格式化
     			String stringTime = sdf.format(date);
     			//将时间显示到浏览器
     			response.getWriter().println(stringTime);
     		}
     	}
     }
     
     
     //创建cookie
     Cookie cookie=new Cookie("lastTime", System.currentTimeMillis()+"");
     //设置存活时间
     cookie.setMaxAge(60*1);
     //设置保存路径
     //  /表示工程下所有的servlet类都能拿到这个cookie
     //  /sh-web-03/servlet表示只有访问路径是servlet下的类才能获取到cookie
     cookie.setPath("/sh-web-03/servlet");
     //保存到响应中
     response.addCookie(cookie);				
    

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值