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-name>demo01</servlet-name>
<servlet-class>com.lanou3g.Demo01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo01</servlet-name>
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
<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() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("服务器service");
}
@Override
public String getServletInfo() {
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{
private ServletConfig config;
@Override
public void init(ServletConfig config) throws ServletException {
this.config= config;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("你好");
String value= this.config.getInitParameter("encoding");
System.out.println(value);
}
@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 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 {
ServletContext application = this.getServletConfig().getServletContext();
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);
}
}