Stoker的JavaEE学习(三)

JavaEE基础学习(三)

一.从表单中获取数据

1.获取表单请求过来的参数 getParameter()
传入的参数就是表单中的 name标签

	String username = request.getParameter("username");
	String password = request.getParameter("password");

2 . 获取参数的所有name getParameterNames()

	Enumeration<String> names = request.getParameterNames();
	while (names.hasMoreElements()) {
		String string = names.nextElement();
		System.out.println(string);
	}

3 .获取参数的所有集合 getParameterMap()

	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);
		}
	}

4 .将获取的参数封装成一个对象

	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);

5 . 利用BeanUtils 直接将请求的参数封装成一个对象

	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();
	}

注意:
1.使用的实体类对象必须符合Javabean规范
2.实体类成员变量 要跟获取的参数一样 成员变量名 和 name 标签名要相同

二.Request域对象

作用范围:只在一次请求中有效

先创建demo04方便测试

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");
		// 响应回浏览器
		response.getWriter().write("456");
		// 取出request域中的值
		Object attribute = request.getAttribute("wanghong");
		System.out.println(attribute);
	}

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

}

1.测试域对象的使用范围
请求转发(一次请求)

	// 在request域中保存值
	request.setAttribute("wanghong", "男");
	// 直接使用request对象 进行请求转发
	// 获取请求转发器
	RequestDispatcher dispatcher = request.getRequestDispatcher("/demo04");
	dispatcher.forward(request, response);

注意:最终响应回浏览器的内容是 转发到的页面的响应

测试请求重定向(两次请求 超出了Request的范围)

response.sendRedirect("/sh-web-03/demo04");

请求包含(一次请求,并且两个页面的响应都会返回给浏览器)

	// 获取字符流
	PrintWriter writer = response.getWriter();
	request.setAttribute("wanghong", "男");
	RequestDispatcher dispatcher = request.getRequestDispatcher("/demo04");
	// 包含方法
	dispatcher.include(request, response);
	// 响应回浏览器
	writer.write("123");
	System.out.println("我是Demo03");
三.会话技术
  • 指的是客户端(用户/浏览器)和服务端(servlet)进行的交互

  • 一次会话 当关闭浏览器时 这次会话才会结束

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

  • 2.服务端技术 HttPSession
    在这里插入图片描述

  • Cookie的使用流程

  • 1.当用户第一次访问服务器时
    服务器可以创建一个cookie出来
    并且 添加到响应中 响应回浏览器

  • 2.当浏览器 接收到 携带了cookie的响应后
    会将cookie保存到本地文件

  • 3.当用户 再一次 访问服务器时
    会携带这cookie一起去访问
    这时服务器拿到cookie可以使用

  • 4.默认当浏览器关闭 会话结束 浏览器销毁保存cookie
    (可以设置cookie存活时间 当时间到了 才会销毁)

  • cookie的使用

  • 1.每个网站最多可以保存20个cookie到浏览器中

  • 2.每个cookie最多4kb(只能保存小数据)

  • 3.每个浏览器最多可以保存300个cookie

  • 4.cookie中不能保存中文

  • setMaxAge 设置cookie存活时间
    以秒为单位
    正值 cookie到时间被销毁
    负值 浏览器不会保存cookie 会话结束 直接销毁cookie
    0值 立即删除cookie

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值