Tomcat
Tomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且开源免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。学习JavaWeb开发一般都使用Tomcat服务器,该服务器支持全部JSP以及Servlet规范。
Tomcat目录下的文件夹
bin:可执行文件(打开关闭服务器的文件)
conf:服务器的配置信息
lib:服务器依赖的 jar 包
logs:服务器日志
temp:产生的临时文件
work:服务器自己的工作空间
webapps:默认存放工程(应用程序)的文件夹
wtpwebapps:跟 eclipse 关联后产生的存放工程的文件夹
启动 测试 Tomcat服务器
从控制台启动 Tomcat 服务器命令:
先到 Tomact 服务器下的 bin 文件夹
sudo chmod 755 *.sh 获取文件夹权限(例如:读写)
sudo sh ./startup.sh 执行打开服务器
sudo sh ./shutdown.sh 关闭服务器
访问服务器网址(url)
http://localhost:8080
协议://本地地址:端口号/项目名(应用程序名)/访问的资源
http://localhost:8080/web/test.html
servlet 小服务程序
是个 java 类,是一个接口
注意:在浏览器上访问的每一个网页都是 servlet
每个 servlet 都需要配置一个网址,在 web.xml 中配置
Servlet
1.用户用网址访问服务器(Tomcat)
2.服务器通过网址可以找到对应项目的 web.xml 文件
3.通过网址找到对应 servlet-name
4.通过 servlet-name 找到对应的 servlet 类
5.创建 servlet 对象
6.执行生命周期方法
实例化 -> 初始化 -> service 服务-> 销毁
创建
方式一
public class Demo01 implements Servlet{
public Demo01() {
System.out.println("实例化方法");
}
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("初始化方法 init");
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("服务方法 service");
}
@Override
public void destroy() {
System.out.println("销毁方法 destroy");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
}
方式二 (适配器模式)
使用哪个方法就重写哪个方法,用不上的方法,可以不重写
@SuppressWarnings("serial")
public class Demo02 extends GenericServlet{
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
}
}
方式三 (模板设计模式)
public class Demo03 extends HttpServlet{
private ServletConfig config;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
this.config = config;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String value = this.config.getInitParameter("encoding");
System.out.println(value);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
获取 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);
}
}
域对象
public class Demo05 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext application = this.getServletConfig().getServletContext();
application.setAttribute("username", "test");
}
@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);
}
}
Servlet的配置
<?xml version="1.0" encoding="UTF-8"?>
<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>Demo</display-name>
<welcome-file-list>
<welcome-file>index.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.Demo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo01</servlet-name>
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo02</servlet-name>
<servlet-class>com.Demo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo02</servlet-name>
<url-pattern>/demo02</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo03</servlet-name>
<servlet-class>com.Demo</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>
<servlet>
<servlet-name>demo04</servlet-name>
<servlet-class>com.Demo</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>demo04</servlet-name>
<url-pattern>/demo04</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo05</servlet-name>
<servlet-class>com.Demo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo05</servlet-name>
<url-pattern>/demo05</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo06</servlet-name>
<servlet-class>com.Demo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo06</servlet-name>
<url-pattern>/demo06</url-pattern>
</servlet-mapping>
</web-app>