JavaWeb:Servlet

  • SRC:用来存放java代码
  • web:用来存放web资源文件:css,js等
  • WEBINF:收服务器保护的目录,浏览器无法直接访问这个目录内容
  • web.xml:动态web工程的配置部署描述文件,可以配置很多web工程的组件(依赖)如:Servlet程序、Filter过滤器、Listener监听器等等
  • lib用来存放第三方jar包(需要自己配置)

Servlet

  • Servlet是规范之一,规范就是接口

  • Servlet是JavaWeb三大组件之一。

    • 三大组件:Servlet程序、Filter过滤器、Listener监听器
  • Servlet是运行在服务器上的一个java小程序,用来接受客户端发送过来的请求,并响应数据给客户端

  • 需要实现类来实现接口Servlet的所有方法

  • service方法是专门用来处理请求和响应的

  1. 编写一个类去实现Servlet接口
  2. 实现service方法,处理请求并响应数据
  3. 到web.xml中配置servlet程序的访问地址
<!--servlet标签给tomcat配置servlet程序-->
<servlet>
	<!--sservlet-name标签给servlet程序起一个别名,一般是类名-->
    <servlet-name></servlet-name>
	<!--sservlet-class是Servlet的全类名-->
    <servlet-class></servlet-class>
</servlet>

<!--servlet-mapping标签的作用是给servlet程序配置访问地址-->
<servlet-mapping>
   <!--servlet-name标签的作用是告诉服务器,我当前配置的地址是那个Servlet服务器使用的-->
	<servlet-name>HelloServlet</servlet-name>
    <!--url-pattern标签配置访问地址
		/ 斜杠表示http://locaihost:8080/工程路径-->
   	<url-pattern></url-pattern>
</servlet-mapping>

生命周期

  1. 执行Servlet构造器方法
  2. 执行init初始化方法
  3. 执行service方法
  4. 指定destrop销毁方法
  • 第一、第二步只在第一次访问的时候创建servlet才会被调用
  • 第三步每次访问都会调用
  • 第四步只在web工程停止的时候才会执行
//因为post和get方法都需要对应service方法,所以需要使用getMethod方法
//使用service的形参servletRequest的子类来调用getMethod方法
HttpServletRequest httpServletRequest = 
    (HttpServletRequest) servletRequest;
httpServletRequest.getMethod();
//此时返回结果为GET
<form action="http://localhost:8080/W12_29/hello" method="get">
<!--此时method为get,调用service的时候会返回GET-->

通过如上方法,可以将service对get和post进行分类操作。

一般在实际开发中,继承HTTPServlet类的方式去实现Servlet程序

  1. 编写一个类去实现HTTPServlet接口
  2. 根据业务需要重写doGet或doPost方法
  3. 到web.xml中配置servlet程序的访问地址
public class HelloHTTPServlet extends HttpServlet implements Servlet {
    //重写doGet方法
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }
	//重写doPost方法
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

也可以使用IDEA自动生成Servlet.java

ServletConfig

ServletConfig三大作用

  1. 可以获取Servlet程序的别名servlet-name的值

    servletConfig.getServletName();
    
  2. 获取初始化参数init-param

    ervletConfig.getInitParameter(param-name);
    //使用key获取value——param-value
    
  3. 获取ServletContext对象

    servletConfig.getServletContext();
    
  • 实现类重写init方法时,必须调用父类的init方法。否则会出现空指针异常。

ServletContext

  • ServletContext是一个接口,它表示Servlet上下文对象
  • 一个工程只有一个ServletContext的实例,ServletContext是在web工程部署时创建,在web停止时销毁。
  • ServletContext对象是一个域对象
    • 什么是域对象
    • 域对象,是像Map一样可以存取数据的对象,叫做域对象
    • 这里的域的范围是整个web工程
存数据 取数据 删除数据
Map put() get() remove()
域对象 setAttribute() getAttribute() removeAttribute()
  • ServletContext的四个作用

    • 获取web.xml 中配置的上下文参数context-param

      //通过ServletConfig获取ServletContext对象
      ServletContext servletContext = getServletConfig().getServletContext();
      System.out.println(servletContext.getInitParameter("username"));
      System.out.println(servletContext.getInitParameter("pwd"));
      
    • 获取当前的工程路径,格式:/工程路径

      servletContext.getContextPath()
      
    • 获取工程部署后在服务器硬盘上的绝对路径

      servletContext.getRealPath("/")
      
    • 像Map一样存取数据

      servletContext.setAttribute("key1","value1");
      
posted @ 2021-12-29 22:32  Boerk  阅读(36)  评论(0)    收藏  举报