你想要多大的成功, 你愿意为这份成功付出什么?

1.form表单

定义: 相当于一个控件集合,里面包含多个控件,点"提交"后会把表单中的所有控件的值都传给action到的页面:

通过post 的method方法传递时会隐藏表单中的所有值,可以在URL地址栏看到?号所跟的值,也就是表单中的值;

表单有三个要素,  1,action 即点击提交后的跳转地址,

2: method 方法, 通过什么样的方式进行传递,

3: submit提交按钮, 通过单击按钮来提交内容.

1.1 利用HTML创建一个form表单

1.2 通过Sevrlet实现一个表单!

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 remember="";String username = "";
     //用Sevrlet实现一个表单;response.getWriter().write("<form action='/sh-web-03/servlet/demo07' method='post'>");response.getWriter().write("用户名<input type='text' name='username' value='"+username+"'><br/>");response.getWriter().write("密码<input type='text' name='password'><br/>");response.getWriter().write("记住<input type='checkbox' name='remember' ><br/>");response.getWriter().write("<input type='submit' value='提交'"+remember+">");response.getWriter().write("</form>");   }

1.3 获取表单提交数据的value值;

1 . 通过表单提供的action =" URL" 找到表单提交到位置的Sevrlet, 从Sevrlet里面获取到想要的值;

例如:    首先: 已知form表单提交的路径:<form action="/sh-web-03/demo01"  method="post">;

其次: 可以在提交的路径里面获取到form表单里面的值; 例如1.1中的图片

1.4 获取form表单中值得方法;

1. 获取from表单中提交单个值:  type=  "text  " (输入框)---radio( 单选框 ) --checkbox( 复选框) --submit(提交)

String  string= request.getParameter( " username" )

2.获取表单提交多个值进行使用 例如: 使用 CheckBox 提交; 需要遍历获取, for each;

String    [] hobbys =  request.getParameterValues("hobby" );

3. 将请求中的参数放入到map集合中;

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");// 防止请求数据乱码;request.setCharacterEncoding("UTF-8");Map<String, String[]> map = request.getParameterMap();for (String  key : map.keySet()) {String[] strings = map.get(key);for (String string : strings) {response.getWriter().write(string);}}}

1. 4.获取到的表单数据可以给对象进行赋值, 对象要有表单数据的value这些属性

 String name = request.getParameter("username");String password = request.getParameter("password");String sex = request.getParameter("sex");// 获取表单提交的多个值使用String[] hobbys = request.getParameterValues("hobby");String city = request.getParameter("city");//将值放到对象中去;用初始化;User user = new User(name, password, sex, hobbys, city);System.out.println(user);
1.5. 利用BeanUtils的一个方法直接 第三方类库, 第二个是参数的集合, key值是表单里面的name

BeanUtils.populate( user, request.getParameter )

注意: 1. 使用这个方法, 所使用的对象,必须是Javabean对象,  set/get/有参/无参 方法;

2. 表单中的name 必须和成员变量相对应.

 String name = request.getParameter("username");String password = request.getParameter("password");String sex = request.getParameter("sex");// 获取表单提交的多个值使用String[] hobbys = request.getParameterValues("hobby");String city = request.getParameter("city");//将值放到对象中去;用初始化;User user = new User(name, password, sex, hobbys, city);System.out.println(user);

2 .四大域对象

一: ServletContext

1.生命周期: 当web应用被加载进容器时创建, 代表整个web应用的ServlerContext

当服务器关闭,或者web应用被移除时, SevrletContext对象被销毁;

2.作用范围:整个web应用.

3.作用: 1.在不同的Servlet之间转发:( 存值取值 )

2.读取资源文件

1.   由于相对路径默认相对的是Java虚拟机启动的目录,所以我们直接写相对路径将会是相对于tomcat/bin目录, 所以是拿不到资源的,

如果写成绝对路径,当项目发布到其他环境的时候,绝对路径就错了,

2.    为了解决这个这个问题ServletContext提供了: this.getServletContext().getRealPath( "/1.properties" ), 给资源的一个虚拟路径, 将会返回该资源在当前环境的真实路径,

this.getServletContext().getResourceAsStream(“/1.properties”),给一个资源的虚拟路径返回到该资源真实路径的流。

3、当在非servlet下获取资源文件时,就没有ServletContext对象用了,此时只能用类加载器

classLoader.getResourceAsStream(“../../1.properties”),此方法利用类加载器直接将资源加载到内存中,有更新延迟的问题,

以及如果文件太大,占用内存过大。

classLoader.getResource(“../1.properties”).getPath(),直接返回资源的真实路径,没有更新延迟的问题。

作用3 :获取全局配置信息:

 ServletContext context = this.getServletContext();// 作用2  获取context的配置信息 context 只有一个, 只能同过ServletContext来获取;String initParameter = context.getInitParameter("kuner"); // kuner是标签里面的name值;System.out.println(initParameter); // 也就是获取标签 里面的value值

作用4: 请求转发 利用: 第一步:获取转发器, 第二步: 利用转发器进行请求转发

 // 第一步 通过context对象获取请求转发器//注意: 请求转发只能是本工程站内转发;//填转发路径是相对于你的工程;  /杠代表工程名后面的路径;  你要给他一个去往的路径;RequestDispatcher requestDispatcher = this.getServletContext().getRequestDispatcher("/demo06");//第二步请求转发; 利用转发器  requestDispatcher.forward(request, response);

二  request 域

1. 声明周期: 在service 方法调用前 由服务器创建, 传入service方法, 整个请求结束, request声明结束

2.作用范围: 整个请求链(  在请求转发过程中也存在 );

3: 作用: 在整个请求链中共享数据,最常用到:在Servlet 中处理好的数据交给jsp 显示, 此时参数就可以放置在request中带过去;

三 : Session域

HTTPSession 在服务器中, 为浏览器创建独一无二的内存空间, 在其中保存会话的相关信息.

1. 声明周期: 在第一次调用request.getSession() 方法的时候, 服务器会检查是否已经有对应的Session,如果没有就在内存中创建一个Session并返回.

当一段时间内Session没有被使用( 默认是30分钟),则服务器会销毁该Session. 如果服务器非正常关闭, 没有到期的Session也会跟着销毁.

2. 如果调用Session提供的invalidate() ,可以立即销毁Session.

3. 如果服务器正常关闭, Session 对象会进行钝化和活化操作. 同时如果服务器钝化的时间在Session默认销毁时间之内,

则活化后Session还是存在的, 否则Session不存在.如果Javabean数据在Session 钝化是,没有实现serializable 则当Session活化时 , 会消失.

作用范围: 一次会话;

四: PageContext

1. 声明周期: 当对jsp的请求开始, 当响应结束时销毁.

2.作用范围:整个jsp页面, 是四大作用域中最小的一个.

作用:

1. 获取其他八大隐式对象, 可以认为是一个入口对象;

2. 获取其所有域中的数据,

 pageContext 操作所有域中属性的方法public java.lang.Object getAttribute(java.lang.String name,int scope)public void setAttribute(java.lang.String name, java.lang.Object value,int scope)public void removeAttribute(java.lang.String name,int scope)pageContext 中代表域的常量PageContext.APPLICATION_SCOPEPageContext.SESSION_SCOPEPageContext.REQUEST_SCOPEPageContext.PAGE_SCOPEfindAttribute方法,在四大域中搜寻属性,搜寻的顺序是page域、request域、session域、application域,从小域到大域开始搜索,如果搜索到就直接获取该值,如果所有域中都找不到,返回一个null(与el表达式不同,此处返回null,对网页是不友好的)(3)跳转到其他资源 其身上提供了forward和include方法,简化重定向和转发的操作

3. cookie

定义: 是web编程里一种客户端存储数据的方式( 通常是加密过的 ).

有些数据, 不是特别重要,但是用户又要经常用到, 比如: 网站用户的登录信息, 历史查看记录等等, 这些数据保存在你服务器上,会增大服务器压力, 你可以将这些数据保存到本地, 下次你访问网站的时候,服务器会主动去你的机器上读取这些数据并展现出来,

注意:每个站点可以保存20个cookie:

每个浏览器: 可以保存300个;

每个cookIe 做多可以保存300个;

cookie默认存活时间,一次会话( 浏览器关闭 )

可以设置cookie存活时间, 浏览器就会将cookie生成一个文件保存到你的硬盘上去;

cookie不能保存中文;

 setMaxAge (时间 秒) 设置cookie的存活时间 ;*     正值 是多少,浏览器就保存多少秒*     负值 浏览器不会储存cookie到硬盘中*         当浏览器关闭 会话结束 这个cookie被删除*      0 cookie被删除;

3: 创建cookie

第一步:                                             new cookie( cookie名, cookie值  );

第二步: 给cookie 设置一个访问路径;       cookie.setPath( "/工程名/servlet");

第三步: 设置cookie存活时间;                  cookie.setMaxAge( 300 );

第四步: 添加cookie到响应中, 也就是到浏览器中 respone. addcookie( new cookie);

     // 第一步 创建一个cookie对象       ----获取到的是long 加上个空字符串;Cookie cookie = new Cookie("lastTime", System.currentTimeMillis()+"");//设置cookie的保存路径//路径"/" 表示该工程下的所有Sevrlet都能访问, 相当于按照工程名来存 /==/sh-web-03// 注意 ---/Demo03 代表demo03这个工程;///sh-web-03/sevrlet  只能是Sevrlet目录下的网页(看配置文件Sevrlet)来访问 也就是Demo04能访问;cookie.setPath("/sh-web-03/servlet");//第三步 设置存活时间cookie.setMaxAge(300);//第四步 添加cookie到响应中 ,响应回浏览器response.addCookie(cookie);

1. 第一次访问:目的是添加cookie, 第二次访问 目的是判断有没有cookie, 有你想要的cookie就读出来;

1. 获取请求中的cookie( 也就是保存在网页上的cookie ),得到的是一个cookie数组;

2.遍历cookie 找到我想要的那个名字那个cookie; cookie.getName();

3. 获取到cookie的value值. 用cookie.getValue;

4. 可以将获取到的cookie值回写到响应中去 也就是回写到浏览器中,

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  format = new SimpleDateFormat("yyyy:MM:dd:HH:mm:ss");//格式化dateString lastTime = format.format(date);//写到response.getWriter().write("上一次登录的时间:"+lastTime);System.out.println("21234");}}

java学习之服务器第26天( --form表单-- 四大域对象--cookie)相关推荐

  1. form表单隐藏域有什么作用

    隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的.当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上. 代码格式:在form表单中写如下代码 < ...

  2. form表单获取input对象浏览器区别

    如果一个html页面有两个form表单,每个input框name相同ID不同,IE会认识name而识别ID,这时它只会取第一个form的input值,firefox识别正常! 2012=-07-23 ...

  3. Java 图片和文本同时提交到form表单multipart/form-data

    <form action="/addPro" method="post" enctype="multipart/form-data"& ...

  4. 微信小程序表单数据提交服务器,微信小程序-form表单提交

    效果 image html代码 是否公开信息 手机号 密码 性别 男 女 提交 重置 {{warn ? warn : "是否公开信息:"+isPub+",手机号:&quo ...

  5. java后台用 requset对象 存储值 前台获取不到_springmvc form表单提交后台对象获取不到值(解决)...

    使用springmvc进行表单提交时,在controller action层实体对象获取不到值. 在struts中使用user.username方式传递参数,在spring中不需要对象点直接使用对象属 ...

  6. 将form表单序列化成对象

    serializeObject function(form){var o = {};$.each(form.serializeArray(),function(){if(o[this['name']] ...

  7. form表单提交提示对象不支持此属性或方法

    form.submit();js代码我是看了一遍又一遍,结论:代码没问题! 可问题究竟出在什么地方呢? 看到上面说:1.修改控件名称的:<input type="submit" ...

  8. html表单数据提交服务器,form表单提交数据到服务器

    [TOC] >[success] # form表单提交数据到服务器 ~~~ 下面案例通过'form表单'的方式提交给后台数据,在'index.html'页面'input'中输入内容提交给后台, ...

  9. ajax 模拟表单提交,Ajax模拟Form表单提交,含多种数据上传

    ---恢复内容开始--- Ajax提交表单.使用FormData提交表单数据和上传的文件(这里的后台使用C#获取,你可以使用Java一样获取) 有时候前台的数据提交到后台,不想使用form表单上传,希 ...

最新文章

  1. BCH代币化方案讨论大爆发,你的观点是什么?
  2. 网站外链优化布局和新增技巧介绍!
  3. mysql unsupported data type._数据查询Unsupported command错误
  4. 第十届蓝桥杯java B组—试题B 不同子串
  5. 【ARM】Tiny4412裸板编程之按键(C语言)
  6. maven打包pom.xml备忘
  7. 中国第一大善人是他!福布斯2019中国慈善榜发布:马云才排第三
  8. 程序员面试金典——11.6矩阵元素查找
  9. linux教程期末考试,Linux-期末考试试题8套(含答案)-linux期末
  10. 黑客是如何入侵服务器的
  11. 编程运维的一些小Tips
  12. 如何制作动态图片gif
  13. 在ios6中调用苹果地图用于导航 (地图开发)
  14. Ubuntu16.04如何设置自动休眠时间
  15. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——C.面积【签到题】
  16. Android R上展讯平台CameraAPP的Settings设置项管理
  17. 计算机设备维修保养记录表填写,弱电设备设施保养记录文本表格.doc
  18. Windows Ubuntu双系统安装日志
  19. 求一个整数的位数(包含0,正数和负数)
  20. FEATURE_MCT_READERDIRECT问题

热门文章

  1. Python爬取二级页面(页面分析很重要)
  2. PowerApps 中管理本地数据网关
  3. 「POI2011 R1」Conspiracy
  4. 语音识别入门第七节:语言模型(实战篇)
  5. python nameerror什么意思_我用Python编写的GTIN程序中的“NameError”是什么意思?
  6. 跨平台工具详解:Netbiscuits (Kony solutions的竞争对手)
  7. emule 多线程下载
  8. MG7780打印机喷嘴堵塞
  9. 成功者都善于造势、借势?造势和借势的真正含义是什么?
  10. c语言中置逆三位正整数,C语言程序设计 – 第 05 章课后习题(11页)-原创力文档...