目录
什么是Servlet
Servlet是运行在web服务器上的一个java程序,它可以接收客户端发送过来的请求,并响应数据给客户端。
一般在实际项目开发中,都是使用继承HttpServlet类的方式去实现Servlet程序。
1)编写一个类去继承 HttpServlet 类。
2)根据业务需要重写doGet或doPost方法。
3)到web.xml中的配置Servlet程序的访问地址
Servlet的生命周期
Servlet程序的生命周期是指,这个Servlet由创建到销毁过程。
ServletContext类
1)ServletContext是一个接口,它表示Servlet上下文对象
2)一个web服务,只有一个ServletContext对象实例。
3)ServletContext对象是一个域对象。
4)ServletContext是在web服务启动的时候创建。在web服务停止的时候销毁。
域对象可以像Map一样存取数据
这里的域指的是存取数据的操作范围,整个web项目。
//获取ServletContext对象
ServletContext context = getServletContext();
//存数据
context.setAttribute("key1", "value1");
//取数据
context.getAttribute("key1")
ServletRequest接口
请求对象,浏览器每次发送请求时被创建,响应结束之后被销毁,用于存放来自页面的参数和浏览器信息,生命周期最短。
- 创建:客户端向服务器发送一次请求
- 销毁:服务器为这次请求做出相应之后,销毁request
常用方法:
- 存放数据:setAttribute(name, value)
- 获取数据:getAttribute(name)
- 删除数据:removeAttribute(name)
返回请求中指定参数的值(从前端页面name属性获取):
//获取数据
String email = request.getParameter("email");
String userpwd = request.getParameter("userpwd");
使用ServletRequest请求转发:
//服务器的分发(request的转发) //服务器跳转页面
request.getRequestDispatcher("login.do").forward(request, response);
HttpSession接口
作用范围:
会话对象,服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享, 拥有较长的生命周期。
会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。
用处:常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。
- 创建:浏览器请求服务器时
- 销毁:关闭浏览器窗口或页面不刷新过期时
常用方法:
- 存放数据:setAttribute(name, value)
- 获取数据:getAttribute(name)
- 删除数据:removeAttribute(name)
session的创建与获取:
//获取session对象(在浏览器中第一次请求的时候服务器就会创建session对象)
HttpSession session = request.getSession();
//利用session对象使用重定向跳转页面
session.setAttribute("loginuser",lo);
//重定向
response.sendRedirect("main.do");
//获取数据
Login lo = (Login) session.getAttribute("loginuser");
请求转发和重定向的区别:
ServletResponse接口
PrintWriter getWriter ( ) ;获取响应流对象
//获取响应流对象
PrintWriter out = response.getWriter();
//响应用户
out.print("hello");
//释放资源
out.close();
设置编码集格式,处理乱码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//处理乱码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");