关于JavaWeb中的组件-------Servlet
Servlet是JavaWeb三大组件中最基础的组件,十分重要。
Servlet,即Server Let的意思,用来处理用户请求。当客户端发出请求后,由Tomcat去找到可以处理这一请求的Servlet来处理。我们也可以这么理解,用户发出登录请求后,tomcat会找到负责处理用户登陆的servlet来进行处理。
Servlet是运行在web中的小型Java程序,通过HTTP协议来处理web客户端的请求。但Servlet一定要实现javax.servlet.Servlet接口,并且还要在web.xml文件中部署!不然Tomcat是找不到我们写的Servlet的。
JavaWeb请求响应流程
首先我们在浏览器中模拟用户请求,tomcat会根据web项目部署的名称找到对应项目下的xml文件,然后再根据用户请求路径找到servlet-mapping中对应的url-pattern,再根据这个url-pattern相应的servlet-name找到servlet中相应的servlet类。然后调用具体的service方法即可完成对应操作。
Servlet生命周期
javax.servlet.Servlet接口中,有三个方法说明了Servlet的生命周期:
- void init(ServletConfig):创建后马上调用init()完成初始化;
- void service(ServletRequest,ServletResponse):每次处理请求时调用service()方法;
- void destroy():当Tomcat要销毁Servlet实例时,先调用destroy()方法。
HttpServlet
用户如今的请求都是基于HTTP的,所以我们应该专门为HTTP请求写一个Servlet做为通用父类。
HttpServlet专门用来处理HTTP请求。
那么如何创建HttpServlet呢?
第一种方法:
1、创建一个类继承HttpServlet
package cn.tx.servlet; |
2、配置Servlet的映射路径
<servlet> |
第二种方法:直接在idea中创建servlet类,自己填写url-pattern即可。
ServletContext简要介绍
ServletContext是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。它的作用:
- 获取WEB应用的全局初始化参数
- 通过ServletContext对象实现数据共享
举例:利用ServletContext来统计站点访问次数:
public class VisitCounterServlet extends HttpServlet{
@Override
public void init() throws ServletException {
//初始化访问次数为0
ServletContext servletContext = getServletContext();
servletContext.setAttribute("visitCount",0);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应内容格式
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
ServletContext servletContext = getServletContext();
Integer visitCount = (Integer) servletContext.getAttribute("visitCount");
visitCount++;
servletContext.setAttribute("visitCount",visitCount);
// 向客户端输出访问次数
resp.getWriter().println("<html><body>");
resp.getWriter().println("<h1>欢迎访问本站!</h1>");
resp.getWriter().println("<p>您是第 " + visitCount + " 位访问者。</p>");
resp.getWriter().println("</body></html>");
}
}
首先在init函数中初始化访问次数为0,每次用户发出一次请求都在doGet方法中将访问次数加1,再讲更改后的变量存回ServletContext,实现了数据共享。