一、把表格封装到对象中
public class Demo01 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//编码格式
response.setContentType("text/html;charset=utf-8");
requst.setCharacterEncoding("UTF-8");
private void fun1(HttpServletRequest request) {
//获取form表单所有数据并打印
String username = request.getParameter("username");
String passworld = request.getParameter("password");
String sex = request.getParameter("sex");
// 获得复选框的传递的值
String[] hobbys = request.getParameterValues("hobby");
if (hobbys !=null) {
for (String h : hobbys) {
System.out.println(h);
}
}
String city = request.getParameter("city");
System.out.println(username);
System.out.println(passworld);
System.out.println(sex);
System.out.println(city);
}
}
}
private void fun2(HttpServletRequest request) {
//利用getParameterNames()打印表单数据
Enumeration<String> names = request.getParameterNames();
if(names.hasMoreElements()) {
String name = names.nextElement();
//根据name取出对应的值
String[] strings = request.getParameterValues(name);
for (String value : strings) {
System.out.println(value);
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
private void fun3(HttpServletRequest request) {
//把表单数据封装到对象中
//需要用到架包:commons-beanutils 和commons-logging(我们调用beanUtils工具类中的populate的方法)
//参数一:要封装的对象,该对象要符合javabean规范
//参数二:要封装的map集合
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();
}
}
}
二、请求转发,重定向,包含
public class Demo02 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//获取字符流
PrintWriter out = response.getWriter();
//给request域中 添加值
request.setAttribute("name", "wanglong");
// fun2(request, response);
//请求包含--相当于把两个页面的响应合称为一个响应,返回给浏览器
RequestDispatcher dispatcher = request.getRequestDispatcher("/demo03");
//包含--456123
dispatcher.include(request, response);
//转发--456--浏览器只能响应一次数据,
dispatcher.forward(request, response);
//响应一句话
out.write("123");
System.out.println("我是demo02结尾");
}
private void fun2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//请求重定向查看能够获取域中的值
//重定向是两次请求,不能获取到requist域中的值
//重定向,既可以访问本地服务器,也可以访问非本地服务器
//请求转发,获取转发器
//只能访问服务器内部,不管写什么路径,始终都在项目目录下,不能访问以外的
RequestDispatcher dispatcher = request.getRequestDispatcher("/demo03");
dispatcher.forward(request,response);
System.out.println("我是Demo02的结尾");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
public class Demo03 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取request域中保存的值
response.getWriter().write("456");
Object name = request.getAttribute("name");
System.out.println(name);
System.out.println("我是Demo03");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
三、会话技术
1.定义:客户端(浏览器)和服务端进行交互,当浏览器关闭的时候,本次交互结束
2.会话中的两个技术
1)cookie(客户端技术)
因为cookie是保存在浏览器中的缓存数据,当我们发起一个请求一个servlet,servlet会进行逻辑处理,处理完成后,给客户端(浏览器)一个响应,响应中,携带者记录了的购买什么商品的cookie,让浏览器保存起来,可以是保存在内存当中(结束会话,cookie被清除),也可以保存在硬盘当中(结束会话,依然存在,是个文件);当浏览器再一次请求的时候,就会携带者之前保存的cookie去访问。
注:第一次访问服务器的时候,是不会携带着cookie去访问的,因为cookie还没有产生,只有当第一次请求后的响应中可以把cookie写回到浏览器中
2)Httpsession(服务端技术)--保存在服务器
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) {
if (cookie.getName().equals("lasTime")) {
//取出cookie的值
String value = cookie.getValue();
// 把字符串转换成long类型
long time = Long.parseLong(value);
//转成日期 Date--Utile
Date date = new Date(time);
//创建一个显示的日期格式
//参数就是你想要的日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
//格式化时间
String lastTime = dateFormat.format(date);
//响应到浏览器
response.getWriter().write("上次的访问时间:" + lastTime);
}
}
}
//创建一个coolie,记录当前的时间
//coolie名字,值
Cookie cookie = new Cookie("lasTime", System.currentTimeMillis()+"");
//设置一下coolie的保存路径 工程名+配置的网址路径
//读取cookie是按请求的地址寻找cookie的
//如果你配置请求路径没有一级目录,这样全网站所有的网址请求都能找到你这个cookie
// cookie.setPath("/");
cookie.setPath("/sh-web-servlet03/servlet");
//设置cookie,存活时间
//负值表示浏览器关闭,cookie消失
//正值表示存活的时间
//0表示删除cookie
cookie.setMaxAge(60 * 5);
//把cookie添加进响应当中
response.addCookie(cookie);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
四、登录后记录用户名
-
public class Demo06 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
String username ="";
//读取cookie
Cookie[] cookies = request.getCookies();
if(cookies!=null) {
for (Cookie cookie : cookies) {
if(cookie.getName().equals("username")) {
String value = cookie.getValue();
}
}
}
//完成数据回显
System.out.println(username);
response.getWriter().write("<form action='/sh-web-servlet03/servlet/demo07' method='post'>");
response.getWriter().write("姓名:<input type='text' name='username'><br>");
response.getWriter().write("密码:<input type='text' name='passwore'><br>");
response.getWriter().write("记住:<input type='checkbox' name='remember'><br>");
response.getWriter().write("<input type='submit' value='登录'>");
response.getWriter().write("</form>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
public class Demo07 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//获取请求的参数,
String username = request.getParameter("username");
String password = request.getParameter("passwore");
String remember = request.getParameter("remember");
//创建cookie
Cookie cookie = new Cookie("username", username);
//设置cookie路径
cookie.setPath("/sh-web-servlet03/servlet");
// 处理业务逻辑
if (username.equals("wanglong")&& password.equals("123")) {
//判断一下是否点,记住按钮
if (remember!=null) {
//需要记住(设置存活时间)
cookie.setMaxAge(Integer.MAX_VALUE);
}else {
//删除原来的cookie
cookie.setMaxAge(0);
}
//添加到响应中
response.addCookie(cookie);
response.getWriter().write("登录成功");
}
else {
response.getWriter().write("登录失败");
//3秒后,返回登录界面
response.setHeader("refresh", "3:url=/sh-web-servlet03/servlet/demo06");
}
//请求分发
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}