您的位置:首页 > 运维架构 > Tomcat

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

2018-03-26 22:12 686 查看

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&g
4000
t;
<!-- 配置那个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() 获取资源真实路径
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: