首页 > 编程知识 正文

Serverlet核心技术下

时间:2023-05-06 09:35:41 阅读:215590 作者:4195

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)数据保存在客户端难免影响服务器性能

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。