Servlet简单入门

Tomcat:web应用服务器
  • bin:存放各个平台启动和停止Tomcat服务的脚本和文件
  • conf:存放各种Tomcat服务器的配置文件
  • lib:存放Tomcat服务器所需要的jar
  • logs:存放Tomcat服务器运行的日志
  • temp:Tomcat运行时的临时文件
  • webapps:存放允许客户端访问的资源(java程序)核心
  • work:存放Tomcat将JSP转换之后的Servlet文件
Servlet
  • 什么是Servlet?

    Servlet是javaweb开发的基石,与平台无关的服务器组件,他是运行在servlet容器/web应用服务器/Tomcat,负责与客户端进行通信

  • Servlet功能:

    1、创建并返回基于客户请求的动态HTML页面

    2、与数据库进行通信

  • 如何使用Servlet?

    Servlet本身是一组接口,(javax.servlet包)自定义一个类,并且实现Servlet接口,这个类

    public class Servlet implements javax.servlet.Servlet {
        //初始化
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
    
        }
        //返一个ServletConfig对象
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
        //核心  处理客户端请求
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            String id = servletRequest.getParameter("id");
            System.out.println("我是Servlet,我已经接受到了客户端发来的请求,参数是"+id);
            servletResponse.setContentType("text/html;charset=UTF-8");//设置相应编码类型
            servletResponse.getWriter().write("你好,客户端!");//中文会乱码
        }
        //返回一个字符串信息
        @Override
        public String getServletInfo() {
            return null;
        }
        //销毁 卸载 释放资源
        @Override
        public void destroy() {
    
        }
    }
    

浏览器不能直接访问Servlet文件,只能通过映射的方式来间接访问Servlet,映射需要手动配置

  • 第一种:基于XML文件的配置方式
    • 在web.XML 中配置
<servlet>
		<!-- 配置Servlet名称,名称必须唯一 -->
        <servlet-name>Servlet</servlet-name>
        <!-- 配置Servlet完全路径(包名+类名) -->
        <servlet-class>com.ganggu.Servlet</servlet-class>
    </servlet>

	<!-- 配置Servlet映射(访问路径) -->
    <servlet-mapping>
    	<!-- 配置Servlet名称,必须和上面的相同 -->
        <servlet-name>Servlet</servlet-name>
        <!-- 配置虚拟路径(访问路径) -->
        <url-pattern>/Servlet</url-pattern>
    </servlet-mapping>
  • 第二种:基于注解的方式
@WebServlet("/demo2")
public class HelloServlet implements Servlet {
}

上面两种配置方式结果一样,将demo2与HelloServlet进行映射,即在浏览器地址栏中直接访问demo2就可以映射到HelloServlet

Servlet的生命周期

1、当浏览器访问Servlet的时候,Tomcat会查询当前Servlet的实例对象是否存在,如果不存在,则通过反射机制动态创建对象,如果存在,直接执行第3步

2、调用intitle方法完成初始化操作

3、调用service方法完成业务逻辑操作

4、关闭Tomcat时,会调用destory方法,释放当前对象占用的资源

Servlet的生命周期方法:无参构造函数、init、 service、destory

1、无参构造函数只调用一次,创建对象

2、init只调用一次,初始化对象

3、service调用N次,执行业务方法

4、destory只调用一次,卸载对象

ServletConfig

该接口用来描述Servlet的基本信息的

getServletName() 返回Servlet的名称,全类名(带着包名的类名)

getInitParameter(String key) 获取init参数的值(web.xml)

getInitParameterNames() 返回所有的initParamter的name值,一般用作遍历初始化参数

getServletContext() 返回ServletContext对象,他是Servlet上下文,整个Servlet的管理者

ServletConfig和ServletContext的区别:

ServletConfig 作用于某个Servlet实例,每个Servlet都有对应的ServletConfig,ServletContext作用于整个Web应用对应一个ServletContext,多个Servlet实例对应一个ServletContext

一个局部对象,一个全局对象

GenericServlet

将Servlet接口中其他的方法做了默认空实现, 只将service()方法作为抽象

将来定义Servlet类是,可以继承GenericServlet,实现service()方法

HTTPServlet

  • doGet方法:接收地址栏请求
  • doPost方法:接收表单请求
public class Servlet_http extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet。。。。");
        //super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost。。。。");
        //super.doPost(req, resp);
    }

注解配置

@WebServlet("/demo1")//Servlet资源路径
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐