配置Tomcat服务器
程序员文章站
2022-07-10 12:12:04
...
配置Tomcat的步骤:
一、apache-tomcat-9.0.0.M26路径配置:
建议将下载的apache-tomcat-9.0.0.M26文件存放到eclipse同一路径下,如下图:
二、eclipse创建工程:
1.将Java切换成JavaEE;
2.创建项目;
3.点击next按钮,到第三个弹窗如下图操作;
4.点击finish按钮完成项目创建。
三、配置Tomcat:
方式一:
从控制台启动 Tomcat 服务器命令:
先到 Tomact 服务器下的 bin 文件夹
sudo chmod 755 *.sh 获取文件夹权限
sudo sh ./startup.sh 执行打开服务器
sudo sh ./shutdown.sh 关闭服务器
方式二:
eclipse中直接添加,具体如下:
1.选择Servers窗口:
2.右击选择New-->Server:
3.点击next按钮,并且添加要挂载项目:
4.完成以上步骤,显示如下:
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.双击服务器,如下
2.出现弹窗后,点击如下选项
3.保存并关闭窗口即可。
访问服务器网站:
http://localhost:8080
协议://本地地址:端口/项目名(应用程序名)/访问的资源
http://localhost:8080/sh-web-servlet01/1.html
访问过程:
小结:
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);
// 设置和获取全局配置信息
// 获取资源真实路径
}
}
上一篇: java配置跨域springboot配置Cors跨域
下一篇: SpringBoot解决跨域问题