java web 中的 Apache Tomcat Servlet 应用详解(一)

Apache Tomcat 9.0.0.M26介绍
1.Tomcat介绍
  1.Tomcat 是由 Apache 开发的一个 Servlet 容器,
  2.实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,
  如Tomcat管理和控制平台、安全域管理和Tomcat阀等。
  3.由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。
  4.但是,不能将  Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。
  5.Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。
2.Tomcat 重要目录
 * bin:可执行文件(打开关闭服务器的文件)
 * conf:服务器的配置信息
 * log:服务器日志
 * temp:产生的临时文件
 * work:服务器自己的工作空间
 * webapps:默认的存放工程文件夹
 * wtpwebapps:跟Eclipse关联后产生的存放工程的文件
 * lib:服务器使用的jar包
2.启动Tomcat服务器命令
1.从控制台启动Tomcat服务器命令
  1.先去往文件夹位置
  2.控制台输入命令sudo chmod 755 *.sh 获取文件夹权限(读取)
  3.输入命令sudo sh ./startup.sh 执行打开服务器
  4.在浏览器中网址输入http://localhost:8080 //访问服务器网址(url)uri
  协议://本地地址:端口号/项目名(应用程序)/访问的资源
  5.输入命令sudo sh ./shutdown.sh 关闭服务器
2.用户通过网址访问服务器(Tomcat)
    1.服务器通过网址可以找到对应项目的web.xml文件
    2.通过网址找到对应的servletname
    3.通过serletname找到对应的 servlet类
    4.创建servlet对象
    5.执行生命周期几个方法
     实例化-->init()初始化-->service服务-->destroy()销毁
3.Servlet 小服务程序 是个java类 接口
    注意:在浏览器上访问的每一个网页都是一个servlet
    每一个servlet都有配置一个网址 在web.xml中配置

2.web.xml配置文件

  <!-- 工程的名字 -->
    <display-name>工程的名字 </display-name>
    <!-- 设置欢迎页面 -->
  <!-- 设置欢迎页面 -->
    判断输入的网址是否一致,不一致继续就向下寻找,如果最后还没找到就会报错如404
    <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-name>demo01</servlet-name>
     <!-- 设置该servlet使用那个类 全限定类名-->
     <servlet-class>com.lanou3g.Demo01</servlet-class>
   </servlet>

       <servlet-mapping>
       <!-- 配置那个serlet的映射地址 -->
       <servlet-name>demo01</servlet-name>
       <!-- 配置映射地址 -->
       <!-- 注意这里的斜杠代表工程名后面斜杠 必须加上 -->
       <url-pattern>/demo01</url-pattern>
       </servlet-mapping>

    <!-- 配置访问路径通配符 -->
    <!-- *.action 只要是以.action结尾的访问路径 -->
    <!-- 都可以访问到demo02这个servlet -->
    <!-- /* 项目目录下 随便输网址 都你访问到demo02 -->
    <!-- 注意:上面两种方式不能连用 --> 

  <!-- 添加servlet的配置信息 -->
  <servlet>  
     <servlet-name>demo03</servlet-name>
     <servlet-class>com.lanou3g.Demo03</servlet-class>
     <init-param>
         <param-name>encoding</param-name>
         <param-value>UTF-8</param-value>
      </init-param>
 </servlet>   
    <servlet-mapping>
       <servlet-name>demo03</servlet-name>
       <url-pattern>/demo03</url-pattern>
    </servlet-mapping>
</web-app>    
3.创建一个Servlet
1.首先进行web.xml配置
  <servlet>  
     <servlet-name>cleanup</servlet-name>
     <servlet-class>CleanUp</servlet-class>
 </servlet>   
    <servlet-mapping>
       <servlet-name>cleanup</servlet-name>
       <url-pattern>/cleanup</url-pattern>
    </servlet-mapping>   
2.创建一个名为CleanUp的Servlet服务程序
package CleanUp;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CleanUp implements Servlet{

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("初始化");

    }

    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
       System.out.println("服务器service");

    }

    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("销毁destroy");

    }

}
3.其他创建servlet方式
1. 创建servlet方式二(适配器模式创建)

public class Demo02 extends GenericServlet {

      @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("适配器服务");

    }
}
2.创建Servlet方式三(模板设计模式) 常用方式 
  获取ServletConfig
  public class Demo03 extends HttpServlet{

    //声明一个ServletConfig对象 当做成员变量
        private ServletConfig config;

        // 初始化方法(通过该方法的参数 获取到ServletConfig对象);
        // ServletConfig对象保存的是Servlet配置信息
        @Override
        public void init(ServletConfig config) throws ServletException {
            //接受配置信息
            this.config= config;
        }

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // TODO Auto-generated method stub
            // 调用父类的doget都会报错
            // 重写完doget方法注意不要调用父类doget
            System.out.println("你好");
            // 参数是配置时的 name(相当于key)
            // 用key获取对应的value
            String value= this.config.getInitParameter("encoding");
            System.out.println(value);
        }

        // 接受post请求
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
}


3.获取ServletConfig
 public class Demo04 extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //通过父类中的方法获取ServletConfig对象
        ServletConfig config= this.getServletConfig();
        String parameter = config.getInitParameter("encoding");
        System.out.println(parameter);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          doGet(req, resp);
    }
}
4.域对象:在一定范围内存储信息的对象
 * ServletContextn 范围:整个程序中 都可以访问到 并且只有一个 单例
 * 每个servlet都可以访问到这个对象
 * 如何获取ServletContext对象?
 * 方式1:从ServletContext对象中获取
 * 方式2:从父类直接获取
 * 注意:所有的域对象 都有设置/获取/删除的方法
public class Demo05 extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 从 ServletConfig 对象中获取
        ServletContext application = this.getServletConfig().getServletContext();
        // 添加一个数据到 context 域中
        // 相当于添加一个键值对 key 和 value
        application.setAttribute("username", "wwww");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
public class Demo06 extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取域对象
        Object object = this.getServletContext().getAttribute("username");
        System.out.println(object);

        // 设置和获取全局配置信息
        // 通过 getServletContext() 获取资源真实路径
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值