Tomcat和Servlet

Tomcat

1.tomcat文件夹下子文件的作用
bin:可执行文件(打开关闭服务器的文件)
conf:服务器的配置信息
logs:服务器日志
temp:产生临时文件
work:服务器自己的工作空间
webapps:默认的存放工程(应用程序)文件夹
wtpwebapps: 跟eclipse关联后产生的存放工程的文件夹
lib:服务器使用的jar包

从控制台启动Tomcat服务器的命令:
先去往Tomcat服务器下面的 bin文件夹
获取文件夹权限(读写)
sudo chmod 755 *.sh
执行打开服务器
sudo sh ./startup.sh
执行关闭服务器
sudo sh ./shutdown.sh

访问服务器网址(url)
http://localhost:8080
协议://本地地址:端口号/项目名(应用程序)/访问的资源
http://localhost:8080/sh-web-servlet01/1.html

Servlet 小服务程序
是个java类 是个接口
注意:在浏览器上访问的每一个网页都是一个servlet
每个servlet都需要配置一个网址 在web.xml中配置

用户如何从浏览器访问到Servlet类 简单谈一下
1.用户用网址访问服务器(tomcat)
2.服务器通过网址可以找到 对应项目的 web.xml文件
3.通过网址找到对应的servletname
4.通过servletname找到对应的 servlet类
5.创建servlet对象
6.执行生命周期几个方法
    实例化-->初始化-->service服务-->销毁

创建Servlet的方法

(1.创建方式1:
public class Demo01 implements Servlet {
    // 生命周期方法以下4个
    // 实例化方法(无参构造方法)
    public Demo01() {
        System.out.println("这时实例化方法");
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("这是初始化方法init");
    }

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
        // TODO Auto-generated method stub
        // servlet只创建一个 多次访问 实际上就是多次调用服务方法service
        System.out.println("这是服务方法service");
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        // 1.删除该应用程序调用
        // 2.停止服务器
        System.out.println("这是销毁方法destroy");
    }
    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        return null;
    }   
}
(2.创建方式二(适配器模式创建)
使用哪个方法就重写哪个方法 用不上的方法可以不重写
public class Demo02 extends GenericServlet{
    @Override
    public void service(ServletRequest req, ServletResponse res)
    throw ServleException, IOException {
        System.out.println("这是demo02");
    }
}
(3.创建方式三(模板设计模式)
public class Demo03 extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
     throws ServletException, IOException {
        // TODO Auto-generated method stub
        // 调用父类的doget方法 怎么都会报错  不是400就是405
        // 重写完doget方法注意不要调用父类的doget方法
        // super.doGet(req, resp);
        System.out.println("这是demo03");
    }
    // 接收post请求
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
     throws ServletException, IOException {
        doGet(req, resp);
    }
}

获取ServletConfig对象的方法

方法一:
    // 声明一个ServletConfig对象 当做成员变量
    private ServletConfig config;
    // 初始化方法(通过该方法的参数 获取ServletConfig对象)
    // ServletConfig对象保存的是servlet中的配置信息
    @Override
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub
        super.init(config);
        // 接收一下ServletConfig
        this.config = config;
    }

    // 获取servlet的配置信息
    // 参数是 配置时的name(相当于key)
    // 用key获取对应的value
    String value = this.config.getInitParameter("encoding");
    System.out.println(value);
方法二:
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
     throws ServletException, IOException {
        // 通过父类中的方法 获取ServletConfig对象
        String value = this.getServletConfig().getInitParameter("encoding");
        System.out.println(value);

Servlet的配置

<?xml version="1.0" encoding="UTF-8"?>
<!-- 下面是xml文件 头文件 限制了该xml文件所能书写的内容 -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <!-- 工程名字 -->
  <display-name>sh-web-servlet01</display-name>
  <!-- 设置欢迎页面 -->
  <welcome-file-list>
    <welcome-file>1.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <!-- 创建一个servlet 对象-->
  <servlet>
    <!-- 设置servlet的名字 -->
    <servlet-name>demo01</servlet-name>
    <!-- 设置该servlet使用那个类 全限定类名-->
    <servlet-class>com.lanou3g.Demo01</servlet-class>
  </servlet>
  <!-- 给该servlet配置一个访问地址(映射地址) -->
  <servlet-mapping>
    <!-- 配置那个servlet的映射地址 -->
    <servlet-name>demo01</servlet-name>
    <!-- 配置映射地址 -->
    <!-- 注意: 这里的 / 代表工程名后面斜杠 必须加上 -->
    <url-pattern>/demo01</url-pattern>
  </servlet-mapping>

  <servlet>
      <servlet-name>demo02</servlet-name>
      <servlet-class>com.lanou3g.Demo02</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>demo02</servlet-name>
    <!-- 配置访问路径通配符  -->
    <!-- *.action 只要是以.action结尾为的访问路径 都可以访问到demo02这个servlet -->
    <!-- /* 只要是项目目录下 随便输入网址都可以访问到demo02 -->
    <!-- 注意:上面两种方式不能连用 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值