欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

配置Tomcat服务器

程序员文章站 2022-07-10 12:12:04
...

配置Tomcat的步骤:

一、apache-tomcat-9.0.0.M26路径配置:

建议将下载的apache-tomcat-9.0.0.M26文件存放到eclipse同一路径下,如下图:

配置Tomcat服务器

二、eclipse创建工程:

1.将Java切换成JavaEE;

配置Tomcat服务器

2.创建项目;

配置Tomcat服务器
配置Tomcat服务器
配置Tomcat服务器

3.点击next按钮,到第三个弹窗如下图操作;

配置Tomcat服务器

4.点击finish按钮完成项目创建。

三、配置Tomcat:

方式一:
从控制台启动 Tomcat 服务器命令:
先到 Tomact 服务器下的 bin 文件夹
sudo chmod 755 *.sh         获取文件夹权限
sudo sh ./startup.sh        执行打开服务器
sudo sh ./shutdown.sh       关闭服务器
方式二:
eclipse中直接添加,具体如下:
1.选择Servers窗口:

配置Tomcat服务器

2.右击选择New-->Server:

配置Tomcat服务器

3.点击next按钮,并且添加要挂载项目:

配置Tomcat服务器
配置Tomcat服务器

4.完成以上步骤,显示如下:

配置Tomcat服务器

Tomcat文件夹:

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

配置web.xml:

<!-- 创建一个servlet对象 -->
<servlet>
    <!-- 设置servlet的名字 -->
    <servlet-name>demo</servlet-name>
    <!-- 设置该servlet使用那个类,全限定类名 -->
    <servlet-class>com.lanou3g.Demo</servlet-class>
</servlet>
<!-- 给该servlet配置一个访问地址(映射地址) -->
<servlet-mapping>
    <!-- 配置那个servblet的映射地址 -->
    <servlet-name>demo</servlet-name>
    <!-- 配置映射地址 -->
    <!-- 注意:这里斜杠代表工程名后面斜杠,必须加上 -->
    <!-- 配置访问路径通配符 -->
    <!-- *.action 只要是以*.action结尾的访问路径都可以访问demo02这个servlet -->
    <!-- /* 项目目录下随便输入网址都能访问到demo02 -->
    <!-- 注意:上面两种方式不能连用/*.action -->
    <url-pattern>/demo</url-pattern>
</servlet-mapping>

创建wtpwebapps文件如下:

1.双击服务器,如下

配置Tomcat服务器

2.出现弹窗后,点击如下选项

配置Tomcat服务器

3.保存并关闭窗口即可。

访问服务器网站:

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

访问过程:

配置Tomcat服务器

小结:
1.用户用网址访问服务器(Tomcat)
2.服务器通过网址可以找到对应项目的web.xml文件
3.通过网址找到对应servlet—name
4.通过servlet-name找到对应的servlet类
5.创建servlet对象
6.执行生命周期几个方法:实例化-->初始化-->servlet服务-->销毁

创建Servlet的三种方法:

方式一(实现Servlet接口):

public class Demo 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只创建了一个,多次访问,实际上就是多次调用服务的方法servlet
        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;
    }
}

方式二(适配器模式创建):

public class Demo extends GenericServlet {
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("我是demo02");
    }
}

方式三(模板设计模式):

public class Demo extends HttpServlet {
    //  声明一个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;
    }
    @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);
        //  获取servlet的配置信息
        //  参数是配置时的name(相当于key)
        //  用key获取对应value
        String value = this.config.getInitParameter("encoding");
        System.out.println(value);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

获取ServletConfig:

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