1.Servlet+JDBC应用(重点)
在Servlet中可以使用JDBC访问数据库,这里以注册功能为例。 //下面是servlet类:@WebServlet(name = "RegisterServlet", urlPatterns = "/register")public class RegisterServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); //1 获取请求对象中保存的用户名与密码 String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("用户名是: " + username + " 密码是:" + password); //2 将信息打包成对象,再交给DAO层处理 User user = new User(username, password);//将信息传给javabean int i = UserDao.createUser(user); //3 将处理结果响应到浏览器 PrintWriter writer = response.getWriter(); if (1 == i) { System.out.println("注册成功!"); writer.write("<h1>注册成功!</h1>"); } else { writer.write("<h1>注册失败!</h1>"); } writer.close(); } 2.重定向和转发(重点) 1.重定向客户端跳转
实现方法:HttpServletResponse接口中 sendRedirect。
客户端向服务器发请求web服务器回发302状态码、新的location地址客户端发现302响应,自动发送新请求(url为新的loaction地址) 2.重定向的特点 地址栏URL会改变会将前面Request对象销毁,然后创建一个新的Request对象。URL可以是其他项目工程 3.转发服务器之间的转发
一个Web组件(Servlet/JSP)将未完成的处理通过容器转交给另外一个Web组件继续处理,转发的各个组件会共享Request和Response对象。
获得转发器对象
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/targetServlet");转发
requestDispatcher.forward(request,response); 4.转发的特点 URL不变共享Request对象(可通过request.setAttribute完成)URL不可是其他项目工程 3. Servlet线程安全(重点) 多线程并发访问一个Servlet时,可能会出现线程安全问题,需要使用synchronized对代码加锁处理(尽量避免使用)或 将共享资源转为局部变量 4.状态管理用户跟踪
HTTP作为“无状态”的协议,服务器完成请求后就断开连接。
为了跟踪同一个客户发出的一系列请求。需要将多次交互作为一个整体,将交互的数据保存下来,既状态管理(Cookie与Session)。
5.Cookie技术(重点) 1.基本概念客户端以“名-值”形式进行保存的一种技术
1.客户端第一次发请求
服务器回发一个HttpResponse响应到客户端,其中包含Set-Cookie的头部
客户端保存cookie,之后向服务器发送请求时,HttpRequest请求中会包含一个Cookie的头部
2.主要方法创建Cookie:
Cookie cookie = new Cookie("name", "zhangfei");//根据参数指定数值构造对象添加至响应信息中:
response.addCookie(cookie);获取Cookie:HttpServletRequest接口的成员方法
Cookie[] cookies = request.getCookies();Cookie获得、修改属性:
//返回此Cookie对象中的名字、数值System.out.println(cookie.getName()+" "+cookie.getValue());//设置此Cookie的值cookie.setValue("lisi");response.addCookie(cookie); 3.Cookie生命周期 默认情况下,浏览器关闭后,Cookie信息就会消失int getMaxAge() :返回cookie的使用期限;void setMaxAge(int expiry) :设置最长保留时间 //获取默认生命期限 int maxAge = cookie.getMaxAge(); System.out.println(maxAge); //设置期限.>0:指定的秒数后消失;=0,马上失效;<0关闭浏览器后失效 cookie.setMaxAge(60*10); 4.Cookie的路径问题 浏览器在访问服务器时,会比较Cookie的路径与请求路径是否匹配,只有匹配的Cookie才会发送给服务器。void setPath(String uri) :设置cookie的路径信息 5.Cookie的特点 数据保存在浏览器端,不安全数据量大小受限(4kb)只能保存字符串可以通过浏览器禁用 6.Session技术(重点) 1.基本概念本意为“会话”,记录在服务端的。
服务端会在内存中分配一个空间,创建一个Session对象,具备一个唯一的ID属性。
服务器以Cookie形式发给浏览器
浏览器再次访问时将SessionId发放服务器,服务器根据ID查找相应的Session对象
2.相关方法 获取Session HttpSession session = request.getSession();boolean isNew():判断是否为新创建的Session
String getId() :获取Session的编号
属性管理:
//使用指定的名称将对象绑定到此会话 session.setAttribute("name","wowowo"); System.out.println(session.getAttribute("name"));//获取//从此会话中删除与指定名称绑定的对象 session.removeAttribute("name"); System.out.println(session.getAttribute("name")); 3.Session的生命周期为了节省服务器内存空间,空闲的Session对象将自动清除,一般时限为30min。
单位为秒。
getMaxInactiveInterval():获取失效时间
void setMaxInactiveInterval(int interval) :设置失效时间
<!-- 可以配置web.xml文件修改失效时间。--><session-config><session-timeout>30</session-timeout><!--在XML中单位为分钟 --></session-config> 4.Session特点 数据比较安全存放数据类型丰富(Cookie只有字符串)大小相比不受限制(Cookie只有4kb) 30 ``` 4.Session特点 数据比较安全存放数据类型丰富(Cookie只有字符串)大小相比不受限制(Cookie只有4kb)数据保存在客户端难免影响服务器性能