客户端请求编码POST/GET方式----RequestDispatcher----Cookie

来源:互联网 发布:游戏策划 美工 强奸 编辑:程序博客网 时间:2024/06/05 23:45
一、客户端请求参数的编码:浏览器当前是什么编码就以什么编码传递数据
通知服务器请求参数使用的编码 
request.setCharacterEncoding("UTF-8")只对Post有效
方式一、
针对get方式的请求中文参数,手工编码
String desc = request.getParameter("desc");
get方式服务器都用ISO-8859-1去解码


new String(desc.getBytes("ISO-8859-1"),"UTF-8");
需要对每一个请求参数都进行编码


方式二、
解决get方式请求参数的中文编码,可以修改Tomcat的配置
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>
不建议使用,依赖服务器


二、ServletRequest对象也是一个域对象,即其内部维护了一个Map对象


三、转发
由A转向B,A称之为源资源,B称之为目标资源


源资源和目标资源共享请求和响应对象。
源资源转发前会清空响应对象缓存中的内容。


转发前,不要刷新或关闭源资源的输出流。
即:源资源的所有输出都无效。


四、RequestDispatcher接口
1、作用:
a、实现转发
forward(ServletRequest request, ServletResponse response))
b、实现包含
include(ServletRequest request, ServletResponse response)
A要包含B,A称之为源资源,B称之为目标资源
特点:A和B的所有输出会合并,由A来显示
A和B共享request和response对象


目标组件设置的所有响应头无效








2、该对象实例的获取
a、SerlvetRequest.getRequestDispatcher(String path):
参数path,路径的写法上
path可以使用绝对路径,也可以使用相对路径
绝对路径以"/"开头,代表当前web应用
b、SerlvetContext.getRequestDispatcher(String path):
参数path,必须以"/"开头,即只能使用绝对路径


五、各种url地址的写法
5.1相对路径
不以“/”开头
5.2绝对路径
以"/"开头
开发中建议使用绝对路径
问题:绝对路径写法中,何时加项目名称,何时不加项目名称
路径如果是给浏览器用的,需要加项目名称;服务器用的,不需要加项目名称


/day06是应用名称
request.getReqeustDispatcher(String path): 不需要加   / 代表当前应用    /servlet/ServletDemo1
ServletContext.getRealPath(String path):  不需要    / 代表当前应用
form表单的action:要加。
HttpServletResponse.sendRedirect(String path):需要
href 需要
img src 需要




六、会话技术
1、Cookie:客户端技术
Cookie是服务器Servlet向客户端传递的一段小数据。
保存客户端。再访问其他服务器资源时会从客户端传递给服务端。
cookie属于某个特定客户端的。


http://www.163.com/app1/username=admin


Cookie的属性:
name:Cookie的名称。必须的
value:单一的值。必须的
comment:可选的。注释
path:可选的。路径                    /app1

/app1
访问的资源路径是http://www.163.com/app2/1.html 不会带cookie过来
访问的资源路径是http://www.163.com/app1/servlet/s/s  会带cookie过来

默认值:/day06/servlet
访问的地址是:http://localhost:8080/day06/1.jsp



domain:可选的。域名   itheima.com    http://www.163.com
如果访问的地址是http://www.itcast.cn/myapp/servlet1
访问的地址是http://www.163.com/app1
默认值:当前写cookie的网站域名
age:可选的。生命值
默认生命值是浏览器进程。
version:可选的。版本号


向客户端写一个Cookie:HttpServletResponse.addCookie(Cookie c)
相当于向客户端写了一个响应头Set-Cookie



服务器通过HttpServletRequest.getCookies() 获取客户端提交过来的Cookie。



相关信息:浏览器对一个网站最多能存20个cookie。
 浏览器最多能存300个Cookie。每一个Cookie不能超过4KB

原创粉丝点击