Servlet

Servlet

一.Servlet概述

1.1 什么是Servlet

Servlet 运行在服务端的Java小程序,是sun公司提供一套规范,用来处理客户端请求、响应给浏览器的动态资源。Servlet是JavaWeb三大组件之一(Servlet、Filter、Listener),且最重要。

1.2 Servlet的作用

用来处理从客户端发送过来的请求,并对该请求作出响应。
Servlet的任务有:

  1. 获取请求数据
  2. 处理请求
  3. 完成响应

广义的Servlet: Servlet接口所有实现类

狭隘的Servlet: 专门指的是Servlet接口

1.3 Servlet的快速入门

  • 定义类实现接口Servlet

  • 重写接口中的抽象方法

  • web.xml配置文件

  public class QuickStartServlet implements Servlet{
      /**
       *  servletRequest:  对象接收客户端的请求
       *  servletResponse: 对象进行客户端的响应
       */
      public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
          System.out.println("Servlet快速入门");
          servletResponse.getWriter().print("Servlet Run");
      }
      @Override
      public void init(ServletConfig servletConfig) throws ServletException {
  
      }
  
      @Override
      public ServletConfig getServletConfig() {
          return null;
      }
  
      @Override
      public String getServletInfo() {
          return null;
      }
  
      @Override
      public void destroy() {
  
      }
  }
<servlet>
    <servlet-name>quick</servlet-name>
    <servlet-class>com.itheima.servlet.QuickStartServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>quick</servlet-name>
    <url-pattern>/quick</url-pattern>
</servlet-mapping>

1.4 Servlet执行原理

在这里插入图片描述

1.5 Servlet对象生命周期

Servlet对象什么时候生,什么时候死.

生命周期相关的三个方法, init,service,destroy

  • init(ServletConfig config)Servlet对象的初始化方法,对象被创建的时候调用

  • service(request,response)客户端访问一次,执行一次

  • destory()Servlet对象销毁之前调用

  • Servlet对象什么时候被创建

    • Servlet默认第一次访问的时候,对象被创建

    • Tomcat服务器启动的时候创建对象,需要修改web.xml (一般不配置)
      <!-- 配置的是Servlet对象启动优先级 可以写任意整数: 数字越小,启动优先级越高 -->

      <load-on-startup>5</load-on-startup>
      
  • Servlet对象什么时候被销毁

    • 停止Tomcat服务器

    • WEB项目从服务器移除

1.6 Servlet的Web.xml配置

Servlet的Web.xml配置
<!--
  Servlet的详细配置
-->
<servlet>
    <!-- name,定义名字,随意-->
    <servlet-name>path</servlet-name>
    <!-- class 配置类的全名,反射-->
    <servlet-class>com.itheima.servlet.PathServlet</servlet-class>
</servlet>

<servlet-mapping>
    <!-- name 必须和上面name相同-->
    <servlet-name>path</servlet-name>
    <!-- url-pattern 配置的是浏览器访问的虚拟路径-->
    <url-pattern>/path</url-pattern>
</servlet-mapping>
url-pattern的配置
  • 完全匹配

    /abc : 浏览器地址栏必须写 /abc

    <url-pattern>/path</url-pattern>
    
  • 目录匹配

    /aaa/bbb/* : 浏览器地址栏可以写 /aaa/bbb/任意

  • 后缀名匹配

    *.abc : 浏览器地址栏可以写 任意.abc

    目录匹配和后缀名匹配不能同时使用

1.7 Tomcat的全局web.xml (了解)

tomcat目录中/conf/web.xml 是全局配置文件,所有的WEB项目都使用

自己的写web.xml只有你自己的项目使用

当全局配置web.xml和自己的web.xml冲突了,听自己的

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

1.8 继承HttpServlet原理

Servlet是JavaEE规范,Servlet接口中的标准方法 service方法
在这里插入图片描述

1.9 ServletConfig对象

ServletConfig对象,表示的是Servlet配置对象

有一个Servlet程序,出现对应的ServletConfig对象

  • 获取ServletConfig对象

    • init方法参数(ServletConfig servletConfig),调用者是Tomcat引擎,ServletConfig对象是由Tomcat引擎创建
    • 父类中,定义了方法 ServletConfig getServletConfig()
  • 对象能做什么

    • 获取Servlet的名字,String getServletName()

         <servlet-name>config</servlet-name>
      
    • 获取Servlet的初始化参数,String getInitParameter(“键名”)

      <init-param>
                  <param-name>heima</param-name>
                  <param-value>java</param-value>
      </init-param>
      
    • 获取ServletContext对象 getServletContext() 返回Servlet上下文对象

2.0 登录案例

在这里插入图片描述

实现步骤
  • 创建数据库表
  • 创建WEB项目
    • 添加必要的jar,配置文件
    • 创建自己的包
  • 编写页面
  • 编写服务器Servlet
CREATE DATABASE web02;

USE web02;

CREATE TABLE `user`(
   username VARCHAR(50),
   `password` VARCHAR(50)
);

INSERT INTO `user` VALUES('tom','123'),('jerry','456');

SELECT COUNT(*) FROM `user`;

SELECT * FROM `user` WHERE username='tom' AND `password`='12h3'
/*
   dbutils 使用哪个结果集
   BeanHandler         查询结果一个JavaBean
   BeanListHandler     查询结果集是多个JavaBean,存储List集合
   ScalarHandler       单项值查询
   ColumnListHandler   查询一个列数据存储集合List<Object>
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取表单提交的数据
    String username =  request.getParameter("username");
    String password = request.getParameter("password");
    // 作为数据表查询条件
    //创建dbutils工具的 核心类对象 QueryRunner
    QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
    //拼写登录查询的SQL
    String sql = "select * from user where username=? and password=?";
    User user = null;
    try {
        //执行查询语句,获取查询后的结果集BeanHandler
         user = qr.query(sql,new BeanHandler<User>(User.class),username,password);
    }catch (Exception ex){ex.printStackTrace();}
    //查询后的结果集进行判断
    //条件不匹配,查询不到任何数据,返回null
    if(user==null){
        //查询不到数据,登录失败
        response.getWriter().print("login error");
    }else {
        //查询数据匹配,登录成功
        response.getWriter().print("login success");
    }

}

tips

调整Servlet模板

在这里插入图片描述

IDEA创建Servlet

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值