java servlet学习(一)
Servlet学习(二)Request和Response
Servlet学习(三)图解Session
Servlet学习(四)ServletContext 和ServletConfig
JSP学习总结
JavaWeb信息管理系统
Servlet
解决请求乱码问题
- 运用String方法进行重新编码
String str=resqut.getParameter("uname"); String uname=new String(str.getBytes("iso8859-1"),"utf-8");
- post请求方式
request.setCharacterEncoding(“utf-8”);
- get请求方式
在Tomcat中的conf文件夹中找到 server.xml文件修改以下部分: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 在其中添加 useBodyEncodingForURI="true" 。 然后在servlet中添加 request.setCharacterEncoding(“utf-8”);
请求转发
(网页跳转,request数据流转)
特点: 一次请求,地址栏信息不变。
request.getRequestDispatcher("要转到的位置").forward(request, response);
重定向
特点: 两次请求,浏览器地址栏信息改变,有效避免表单的重复提交。
response.sendRedirect(“路径”)
//本地路径为:uri
//网络路径为:定向资源的 URL 信息
Request对象的作用域
(如何将一个servlet中的数据传到另一个servlet中。)
作用: 解决了一次请求内的不同 Servlet 的数据(请求数据+其他数据)共享问题。
request.setAttribute(object name,Object value);
request.getAttribute(Object obj);
注意: 使用 Request 对象进行数据流转,数据只在一次请求内有效。
Cookie技术
Cookie 技术其实是浏览器端的数据存储技术,解决了不同请求需要使用相同的请求数据的问题。我们把请求需要共享的请求数据,存储在浏览器端,避免用户进行重复的书写请求数据。但是哪些数据需要使用 Cookie 技术存储起来是一个主观问题,需要在后台进行响应的时候来告诉浏览器,有些数据其他请求还会使用,需要存储起来。Cookie是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。
特点
- 浏览器端的数据存储技术
- 适合少量数据
- 键值对存储
- 不安全
分类
Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。
内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘裡,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。
添加Cookie
//初始化cookie对象,设置键值对,键名:uid;值:user.getUid()
Cookie c=new Cookie("uid", user.getUid()+"");
//设置cookie的持续时间
c.setMaxAge(3*24*3600);
//设置特定目录下共享cookie(/logincase/cookieverify下使用该cookie)
c.setPath("/logincase/cookieverify");
//添加cookie实例。
response.addCookie(c);
获得Cookie
//获得Cookie对象,存储在数组中
Cookie[] cks=request.getCookies();
//遍历
for(Cookie c:cks) {
String name=c.getName(); //得到一个cookie的键名
if(name.equals("uid")) {
id=c.getValue(); //得到键名为uid的cookie的值
}
}