一: 保存表单数据到对象中:

  • getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值。
  • getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
  • getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法
private void fun1(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");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)

//根据表单属性新建一个对象类用来保存表单数据

private void fun2(HttpServletRequest request) {//把请求中的参数 放到map中Map<String, String[]> map = request.getParameterMap();for (String key : map.keySet()) {System.out.println(key);String[] str = map.get(key);for (String value : str) {System.out.println(value);}}}
username
vlin_fan
password
5201314
sex
女
hobby
唱歌
city
北京
     Enumeration<String> Names = request.getParameterNames();while (Names.hasMoreElements()) {System.out.println(Names.nextElement());}
username
password
sex
hobby
city

请求转发

一次请求 并且响应到网页的是 转发后的响应结果

请求重定向

两次请求 超出Request域的作用范围 不能使用

request域传值

请求包含

1.几次请求? 一次请求 (可以用request域传值)

2.最终响应的浏览器的内容是什么?

两个servlet 的响应结果会一起返回给浏览器

package com.lanou3g;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Demo02 extends HttpServlet {/*** Request  域对象* 内部维护了一个map集合 可以添加获取删除 值* 作用范围:只对一次请求有效*/private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");//获取响应中字符流PrintWriter writer = response.getWriter();//向域对象中保存个值request.setAttribute("name", "阿凡达");//fun1(request, response);// fun2(response);//请求包含//1 获取请求转化器RequestDispatcher dispatcher = request.getRequestDispatcher("/demo03");//2 包含方法dispatcher.include(request, response);writer.write("123");System.out.println("我是demo02");}private void fun2(HttpServletResponse response) throws IOException {//进行请求重定向//参数是重定向的地址response.sendRedirect("/sh-web-03/demo03");}private void fun1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//请求转发//获取请求转发器RequestDispatcher dispatcher = request.getRequestDispatcher("/demo03");//转发dispatcher.forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
package com.lanou3g;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Demo03 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");PrintWriter writer = response.getWriter();writer.write("456");//取出存在request域中的值String nString =(String)request.getAttribute("name");System.out.println(nString);System.out.println("我是demo03");}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

配置的xml文件

<servlet><servlet-name>demo02</servlet-name><servlet-class>com.lanou3g.Demo02</servlet-class></servlet><servlet-mapping><servlet-name>demo02</servlet-name><url-pattern>/demo02</url-pattern></servlet-mapping><servlet><servlet-name>demo03</servlet-name><servlet-class>com.lanou3g.Demo03</servlet-class></servlet><servlet-mapping><servlet-name>demo03</servlet-name><url-pattern>/demo03</url-pattern></servlet-mapping>

会话技术:

客户端与服务端的交互 就是会话

什么是会话?

相当于访问网页时 只要浏览器不关闭 点击多次连接也属于一次会话.

关闭浏览器就叫结束会话

1.客户端技术   Cookie 保存着浏览器当中 实际上就是一个文件  第一次访问cooKie 是没有内容的

每个站点(网站) 可以保存20个cookie

每个浏览器可以保存300个cookie

每个cookie大概可以保存4kb 的数据

cookie的默认存活时间为一次会话 关闭浏览器 cookie被清除

默认是保存在 浏览器的内存当中  可以设置cookie的存活时间

一旦设置时间 浏览器会将cookie保存到硬盘当中 (保存到文件中)

注意 不能保存中文

设置cookie的存活时间

setMaxAge(int 时间 以秒为单位)

正值: 值是多少 浏览器就保存多少秒

负值: 浏览器不会存储cookie到硬盘当中

当浏览器关闭 会话结束 这个cookie 被删除

0  : cookie 被删除

一 :看一个cookie保存时间的例子

需求:显示上一次(最后一次)的登录时间 (关闭浏览器之后 在访问还能显示)

第一次访问时将时间保存到cookie中再响应会浏览器 让浏览器存储起来

下一次在访问时 可以通过request 请求获取之前保存的cookie 显示之前存储的时间

package com.lanou3g;import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo04 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");//接到请求 先读取cookie//获取请求中的cookieCookie[] cookies = request.getCookies();if (cookies!=null) {//遍历cookie的数组for (Cookie cookie : cookies) {//找出之前保存的cookie按名字if (cookie.getName().equals("lastTime")) {//获取cookie 的值String value = cookie.getValue();//将字符串转化成long型long time = Long.parseLong(value);//转化成时间Date date = new Date(time);//转化时间的格式(格式化输出时间)SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");//格式化date对象String lastTime = dateFormat.format(date);//打印前一次的登录时间写的网页上PrintWriter writer = response.getWriter();writer.write("上次登录时间为"+lastTime);}}}//创建一个cookie对象Cookie cookie = new Cookie("lastTime", System.currentTimeMillis()+"");//设置cookie的保存路径// "/" 表示该工程下的所有servlet 都能访问 保存时相当于按工程名存储//  "/sh-web-03/servlet" 相当于 只有servlet 目录下的网页才能访问cookie.setPath("/sh-web-03/servlet");//设置cookie的存活时间cookie.setMaxAge(60*5);//添加cookie到响应中response.addCookie(cookie);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
package com.lanou3g;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Demo05 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");Cookie[] cookies = request.getCookies();if (cookies!=null) {//遍历cookie的数组for (Cookie cookie : cookies) {//找出之前保存的cookie按名字if (cookie.getName().equals("lastTime")) {//获取cookie 的值String value = cookie.getValue();//将字符串转化成long型long time = Long.parseLong(value);//转化成时间Date date = new Date(time);//转化时间的格式(格式化输出时间)SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");//格式化date对象String lastTime = dateFormat.format(date);//打印前一次的登录时间写的网页上PrintWriter writer = response.getWriter();writer.write("上次登录时间为"+lastTime);}}}}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

配置的XML文件

 <servlet><servlet-name>demo04</servlet-name><servlet-class>com.lanou3g.Demo04</servlet-class></servlet><servlet-mapping><servlet-name>demo04</servlet-name><url-pattern>/servlet/demo04</url-pattern></servlet-mapping><servlet><servlet-name>demo05</servlet-name><servlet-class>com.lanou3g.Demo05</servlet-class></servlet><servlet-mapping><servlet-name>demo05</servlet-name><url-pattern>/servlet/demo05</url-pattern></servlet-mapping>

需求 :

* 登录后 下次再打开浏览器 还能记录用户名

package com.lanou4g;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Demn06 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");String username = "";String remember = "";Cookie[] cookies = request.getCookies();if (cookies!=null) {for (Cookie cookie : cookies) {if (cookie.getName().equals("username")) {username = cookie.getValue();remember = "checked=\'checked\'";}}}//将HTML表单写入浏览器String str = "<form action=\"/sh-web-03/demn07\" method=\"post\">\n" + "     用户:<input type=\"text\" name=\"username\""+" value="+username+" /><br/>\n" + "     密码:<input type=\"text\" name=\"password\"/><br/>\n" + "        记住:<input type=\"checkbox\" name=\"remember\""+remember+ "/><br/>\n" + "       <input type=\"submit\"  value=\"提交\"/>\n" + "    </form>";response.getWriter().println(str);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
package com.lanou3g;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** 处理登录的请求* 判断账户wanglong 密码123 就算登录成功* 点记住 就保存cookie 设置存活时间 没点 就把cookie删除*/
public class Demo07 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");String username = request.getParameter("username");String password = request.getParameter("password");String[] values = request.getParameterValues("remember");//单选框 选中返回 on 不选 返回 null//创建密码保存用户名Cookie cookie = new Cookie("username", username);//设置cookie的路径cookie.setPath("/sh-web-03/servlet");if (username.equals("wanglong")&&password.equals("123")) {//点记住 就保存cookie 设置存活时间 没点 就把cookie删除if (values!=null) {//设置存活时间cookie.setMaxAge(Integer.MAX_VALUE);}else {//删除cookiecookie.setMaxAge(0);}//显示登录成功response.getWriter().write("登录成功");//响应中添加cookie response.addCookie(cookie);}else {//登录失败 3 秒返回登录界面response.getWriter().write("登录失败");response.setHeader("refresh", "3;url=/sh-web-03/servlet/demo06");}}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

Java基础学习之cookie相关推荐

  1. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

  2. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  3. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  4. java基础学安卓开发_Android开发学习路线之Java基础学习

    原标题:Android开发学习路线之Java基础学习 很多Android学习开发者刚入手Android开发技术时,稍微有点迫切.任何的开发技术都有其基础语言,Android应用程序开发是以Java语言 ...

  5. Java基础学习:尚硅谷项目三 开发团队调度软件

    Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...

  6. Java基础学习汇总

    Java基础学习汇总 java语言基础 java函数和数组 java面向对象 java异常 整理用,早就停更... 写作不易,如果您觉得写的不错,欢迎给博主点赞.收藏.评论.收藏来一波~让博主更有动力 ...

  7. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  8. Java基础学习——第十四章 网络编程

    Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...

  9. Java基础学习(9)

    Java基础学习 一.常用方法(API) 1.1 Math 1.2 System 1.3 Runtime 1. 4 .object 1.5 Objects 1.6 BigInteger BigInte ...

最新文章

  1. SQL--添加角色权限
  2. Python之路【第五篇续】:面向对象编程二
  3. Android 实现手写板技术
  4. 2021年重庆高考成绩排名查询,2021年重庆理科高考成绩排名一分一段表,重庆高考理科成绩排名查询...
  5. Response to preflight request doesn‘t pass access control check: The value of the ‘Access-Control-Al
  6. 2021-07-29动态规划自学笔记
  7. 性能测试知多少---吞吐量【转】
  8. android listview item 选中背景,Android ListView的item背景色设置和item点击无响应的解决方法...
  9. 论文笔记_S2D.61_2019-CVPR-DeepLiDAR:基于稀疏激光雷达数据和单张彩色图像的户外场景的表面法线引导的深度预测
  10. Markdown打造高逼格博客
  11. 元气骑士没有手柄怎么解锁机器人_元气骑士机器人怎么解锁?机器人获取方式和技能介绍...
  12. wps2019政府专版 无广告
  13. Scheme语言入门
  14. python背单词小程序_微信小程序仿《乐词》背单词APP源码
  15. 阿里财报中的饿了么:守正出奇
  16. 班主任有趣高效的班级惩罚制度
  17. 三、nginx服务的nginx.conf的参数配置解析
  18. 2016年,续航新能量
  19. 在武汉火车站转车需要出现吗_武汉火车站可以在站内换乘哪些站 武汉地铁6号线和1号线/13号线换乘...
  20. spring 整合c3p0连接池

热门文章

  1. uniapp webview 直接调用原生摄像头拍照 拍视频 img video,通过ajax获取blob(file为特殊的blob)对象并上传到后端服务器
  2. Python 机器学习简单实例:KNN预测鸢尾花分类
  3. 读懂善用《数据安全法》:态度、战略、举措缺一不可
  4. 火山安卓组件之花式按钮
  5. 单片机C语言 8,PIC单片机C语言程序设计_8_
  6. 黑客入侵电脑常用的5种手段,如果你电脑里有秘密,做好3件事
  7. 教你如何自学UI设计
  8. (十)51单片机——利用蜂鸣器播放《孤勇者》(附成果展示)
  9. python 水仙花数代码
  10. pdf2htmlex的下载及使用