servlet知多少?

一、什么是Servlet
1 Servlet是JavaEE规范之一.它是JavaWeb的三大组件之一.JavaWeb的三大组件分别是:Servlet程序,Filter过滤器,Listener监听器.
2 Servlet是运行在web服务器上的Java小程序.
3 Servlet主要是用来接收客户端发送过来的请求,并响应数据给客户端
二、web.xml中配置servlet标签的含义
:告诉Tomcat服务器,我当前web工程中有一个Servlet程序
:给Servlet程序起一个别名,一般是Servlet程序的全类名首字母小写
:配置Servlet程序的全类名
:表示给servlet程序配置访问地址

:表示访问地址
/ :表示请求地址是: http://ip:port/工程路径/
/hello :表示地址是: http://ip:port/工程路径/hello

三、url地址到Servlet程序的访问解析
①:通过ip地址定位到网络中的服务器主机
②:通过端口号定位到tomcat服务器
③:通过工程名称定位到具体要访问的工程
④:通过资源路径名称定位到要访问的工程中的具体类,然后执行类中的相关代码程序

四、servlet生命周期(Servlet程序是单例的)
①:执行Servlet程序的构造器方法
②:执行init() 初始化方法
注意:以上2步,只有第一次访问servlet程序时才会被调用
③:执行service() 业务方法
注意:每次请求一次servlet,service方法就会被调用一次
④:执行destroy销毁方法
在web工程停止运行时,被调用

Servlet是由Tomcat服务器第一次访问到Servlet程序的时候创建Servlet.
Servlet中的方法都是由Tomcat服务器负责调用.
⑤:<load-on-startup>数字</load-on-startup>作用
    默认情况下,Servlet程序是在我们第一次访问的时候,由Tomcat服务器负责创建.
    配置以上标签,可以让Tomcat服务器在启动web工程的时候,就创建Servlet程序
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>com.com.swk.servlet.HelloServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>helloServlet</servlet-name>
        <!--这里的路径配置必须是/开头-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>helloServlet2</servlet-name>
        <servlet-class>com.com.swk.servlet.HelloServlet2</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>helloServlet2</servlet-name>
        <!--这里的路径配置必须是/开头-->
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>helloServlet3</servlet-name>
        <servlet-class>com.com.swk.servlet.HelloServlet3</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>helloServlet3</servlet-name>
        <url-pattern>/hello3</url-pattern>
    </servlet-mapping>


    <!--Servlet其它配置类-->
    <!--1、ServletConfig类-->
    <servlet>
        <servlet-name>configServlet</servlet-name>
        <servlet-class>com.com.swk.otherServlet.configServlet</servlet-class>
        <init-param>
            <param-name>bookname</param-name>
            <param-value>解忧杂货店</param-value>
        </init-param>
        <init-param>
            <param-name>bookauthor</param-name>
            <param-value>东野</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>configServlet</servlet-name>
        <url-pattern>/config</url-pattern>
    </servlet-mapping>

    <!--2、ServletContext类-->
    <!--上下文参数..给所有Servlet程序使用-->
    <context-param>
        <param-name>username</param-name>
        <param-value>root</param-value>
    </context-param>
    <context-param>
        <param-name>password</param-name>
        <param-value>atguigu</param-value>
    </context-param>
    <servlet>
        <servlet-name>contextServlet</servlet-name>
        <servlet-class>com.com.swk.otherServlet.contextServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>contextServlet</servlet-name>
        <url-pattern>/context</url-pattern>
    </servlet-mapping>

</web-app>

五、get和post请求分发处理
Servlet接口中的service方法只有一个,但是请求类型分为:get请求和post请求
service方法针对两种请求处理方式:默认使用get请求,走doGet方法处理程序
doGet方法用于处理get业务,doPost方法用于处理post业务

六、通过继承HttpServlet实现Servlet程序
见–HelloServlet2–程序

public class HelloServlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet 方法调用了");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost 方法调用了");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.service(req, resp);
    }
}

七、注解形式配置Servlet程序
web.xml配置Servlet是2.5的规范
servlet3.0规范,只需要使用注解即可,不需要到web.xml中去配置.
见–AnnotationServlet–程序
@WebServlet 注解表示当前类是一个Servlet程序

八、ServletConfig类—是servlet程序的配置信息类
Tomcat每次创建Servlet程序的时候都会创建一个对应的ServletConfig对象实例.
作用:
ServletConfig主要是用来获取Servlet程序的配置信息.
1 获取Servlet程序的别名
2 获取Servlet程序初始化参数
3 获取Servle tContext对象实例
详细代码见—configServlet类及配置

/**
 * ServletConfig主要是用来获取Servlet程序的配置信息.
 *
 * 	1 获取Servlet程序的别名
 * 	2 获取Servlet程序初始化参数
 * 	3 获取ServletContext对象实例
 */
public class configServlet extends HttpServlet {
    @Override
    public void init(ServletConfig config) throws ServletException {
//        获取Servlet程序的别名    servlet-name标签的值
        String servletName = config.getServletName();
        System.out.println(servletName);
        System.out.println("\n\t");
//        获取Servlet程序初始化参数
        String bookName = config.getInitParameter("bookname");
        System.out.println(bookName);
        String bookAuthor = config.getInitParameter("bookauthor");
        System.out.println(bookAuthor);
//       获取ServletContext对象实例
        ServletContext servletContext = config.getServletContext();
        System.out.println(servletContext);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

九、ServletContext类—是一个接口,表示一个web工程
①:一个web工程Tomcat只会创建出一个对应的ServletContext对象实例.
②:servletContext是一个域对象
③:ServletContext对象在web工程启动的时候创建,在web工程停止的时候销毁
(1)引入域对象概念:
①:域对象是一个可以像map一样存取数据的对象
②:域指的是存取的数据的有效操作范围.
③:servletContext对象保存进去的数据,在整个web工程中都可以获取到
(2)ServletContext类的四个作用(必须掌握)
①:获取Context-param 上下文初始化参数
②:获取工程路径
③:可以获取工程部署到tomcat服务器上后在硬盘上的绝对路径
④:可以像map一样存取数据
(3)域对象操作数据的方法
保存数据 获取数据 删除数据
域对象 setAttribute(key,value); getAttribute(key); removeAttribute(key);

十、servletContext中getAttribute()和setAttribute()方法
①:首先通过servletContext对象向setAttribute()方法中设置值
②:通过在另外一个请求的代码中通过getAttribute()方法获取servletContext域对象中的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值