JavaWeb笔记(二)Servlet

Tomcat目录简介

  • bin——可执行文件
  • conf——配置文件
  • lib——依赖jar包
  • logs——日志文件
  • temp——临时文件
  • webapps——默认项目部署路径
  • work——存放运行时的数据
  • wtpwebapps——eclipse默认项目部署路径

Servlet

生命周期

  • init() 创建Servlet时执行一次

    • xml配置创建时间,负数为第一次被访问时创建,非负数在服务器启动时创建

        <servlet>
            <load-on-startup></load-on-startup>
        </servlet>
      
  • service() 每次访问Servlet时都会执行,单例

  • destroy() 正常关闭时执行一次,一般用于释放资源

配置

在web.xml中配置:

<servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>包名.类名</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/demo</url-pattern>
</servlet-mapping>

Servlet3.0以上不用xml配置,支持注解配置

优化Servlet

减少Servlet的数量,将相关联模块Servlet写在一个Servlet中

  1. 创建一个BaseServlet继承HttpServlet(重写service方法,用作方法分发,没有访问路径)
  2. 创建Servlet(UserServlet)继承BaseServlet(相关联的Servlet写在同一个Servlet中)
  3. 修改方法修饰符为public,UserServlet访问路径为("/user/*")

代码

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //完成方法分发
        //1.获取请求路径
        String uri = req.getRequestURI();
        //2.获取方法名称
        String methodName = uri.substring(uri.lastIndexOf('/') + 1);
        try {
            //3.获取方法对象Method
            Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
            //4.执行方法
            method.invoke(this,req,resp);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
posted @ 2019-04-05 21:14  月下梦花落  阅读(125)  评论(0编辑  收藏  举报