javaweb之表单输入域,请求转发以及cookie和session原理
一、各种表单输入域(中文请求参数)
1、如果表单输入域的type为radio和checkbox,如果用户一个都不选,则不向服务器传递数据。
2、如果选择了radio或checkbox的输入项中的其中一个,看他们有没有value,如果有,则传
value的取值。如果没有,值为on。
二、请求转发和包含
1、请求转发:(当前应用内转)
方式一:
ServletContext.getRequestDispatcher(String path):path必须以"/"开头,表示绝对路径
方式二:
ServletRequest.getRequestDispatcher(String path):path如果"/"开头,表示绝对路径;
如果不以"/"开头,表示相对路径
2、转发的细节:AServlet(源组件)--->BServlet(目标组件)
**转发前会清空response的正文。
转发页面上只会输出目标组件的输出,源组件的任何页面输出都无效。
原则:转发前,不要刷新或关闭response的输出流。
3、包含:RequestDispatcher
AServlet(源组件)--->BServlet(目标组件):AServlet包含BServlet的输出内容
目标组件所有设置的头都无效,正文有效。
三、各种URL地址的写法
绝对地址:建议使用
绝对路径的写法:何时需要加上应用名称"/day06"
(如果地址给客户端用,要加上。如果给服务器端用,"/"就代表当前应用,即"/day06")
<img src="path"/> 要加/day06
<link type="text/style" href="path"/> 要加/day06
<a href="path"/> 要加/day06
<script type="text/javascript" src="path"/> 要加/day06
<form action="path"/> 要加/day06
头:Refresh=2;URL=path 要加/day06
response.sendRedirect(String path): 要加/day06
getRequestDispatcher(String path): 不要加。"/"就代表了
ServletContext.getRealPath(String path): 不要加。"/"就代表了
四、会话技术概述
1、Cookie技术:客户端技术
Cookie是一段小信息。Servlet把这些小信息写到客户端的缓存中(Set-Cookie),
客户端还能带着小信息给服务器(Cookie)。
a、Cookie的属性
name:(必须的)
value:(必须的)
comment:(可选的)针对该Cookie的注释。
path:(可选的)默认值是写Cookie的那个Servlet的访问路径。/day06/servlet/CookieDemo1
有一个cookie,名为a,它的路径为/day06/servlet
当访问http://localhost:8080/day06/aaa/SomeServlet时,浏览器不会带名为a的cookie带过来。
当访问http://localhost:8080/day06/servlet/bbb/ccc/ddd/aaaCookieDemo2,浏览器会带名为a的
cookie带过来。
如果把cookie的路径设置为"/day06",意味着,day06中的所有资源都能得到a。
domain:(可选的)默认值是写Cookie的那个网站。如果domain取值为localhost,
那么只有访问localhost这个网站时才会带过去。
maxage:(可选的)设置Cookie的最大存活时间。默认值是浏览器进程(一次会话)。单位是秒。
version:(可选的)
每个客户端针对一个网站,只支持20个cookie。最多保存300个cookie。每个cookie大小不能超过4KB
Tip:
domian+path+name:唯一定位一个Cookie
localhost/day06/servlet/lastAccessTime
localhost:domain
/day06/servlet/:path
lastAccessTime:name
b、如何向客户端写Cookie:HttpServletResponse.addCookie(Cookie c)
c、服务端如何得到客户端带过来的cookie:HttpServletRequest.getCookies()
2、HttpSession技术:服务端技术
五、Cookie原理
六、Cookie案例:3个案例
七、HttpSession原理
1、服务器端技术:HttpSession,它也是一个域对象。
2、HttpSession服务器端技术,实际上用的是cookie技术。服务器向客户端写了一个特殊的cookie,
名字为"JSESSIONID",值为当前session对象的id(唯一),path是当前应用。
3、HttpSession中常用的方法
a、HttpServletRequest.getSession():根据客户端cookie(JSESSIONID)的值查找session对象,
没有,创建一个session对象。
b、HttpServletReqeust.getSession(boolean create):如果为true,与a没有区别。如果为false,只会查找。
查找不到返回null;
c、HttpSession.getId():唯一的session对象标识。
八、HttpSession案例:3个案例
MD5、Base64编码;UUID等等
九、HttpSession对象的状态转换
十、客户端禁用cookie后,会话数据的保存问题
十一、浏览器IE,在什么情况下会开启一次新的会话。