Servlet tomcat配置以及应用

来源:互联网 发布:中国兵器工业 知乎 编辑:程序博客网 时间:2024/06/05 02:24

一、tomcat配置 (以apache-tomcat-7.0.70为例):

1、下载apache-tomcat-7.0.70压缩包

2、解压到指定的目录下,如:D:\opensource\WEB\Back\Tomcat\apache-tomcat-7.0.70

3、配置环境:如果JDK 已配置则无需指定。tomcat需要Java JDK 支持。

4、测试是否启动成功:在页面地址输入localhost:8080 进入tomcat的index页面,说明配置成功。

二、tomcat 其实就是一个servlet容器。

三、修改tomcat 端口号:

在config文件夹中一个server.xml中找到元素节点为<Connector> ,更改port属性指定端口,如果更改字符集编码再添加URLEncoding="字符编码集",比如UTF-8,注意在此文件中更改,则为全局性。

四、tomcat的管理程序

在conf目录下的tomcat-users.xml文件配置管理员权限账号,添加manager角色,设置用户名和密码

    <tomcat-users><role rolename="manager"/><role rolename="manager-gui"/><role rolename="manager-script"/><user password="123" roles="manager-gui,manager-script" username="admin"/>   </tomcat-users>

设置好后可以在tomcat页面上登录账号后部署或查看web项目

五、Servlet 规范定义了web应用程序的目录层次


六、Servlet示例:

1、编写自定义ExampleServlet类继承Servlet接口

package com.servletexample.servlet;import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;/** * @ClassName: ExampleServlet  * @Description: TODO Servlet示例 * @author Shen  */public class ExampleServlet implements Servlet{/** * Servlet销毁时该方法将调用 */@Overridepublic void destroy() {System.out.println("ServletContext将销毁");}/** * getServletConfig() 方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和 ServletContext。 * ServletContext 接口提供有关 servlet 的环境信息。 */@Overridepublic ServletConfig getServletConfig() {System.out.println("getServletConfig()");return null;}/** * getServletInfo() 方法是一个可选的方法,它提供有关 servlet 的信息,如作者、版本、版权。 */@Overridepublic String getServletInfo() {System.out.println("getServletInfo()");return null;}/** * 在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。  * 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。  * 无论有多少客户机访问 Servlet,都不会重复执行 init() 。 */@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println("初始化Servlet");}/** * service() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用, * 而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。  */@Overridepublic void service(ServletRequest request, ServletResponse repsonse) throws ServletException, IOException {System.out.println("service");}}

2、在web.xml中配置自定义的ServletExample


<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://java.sun.com/xml/ns/javaee"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  id="WebApp_ID" version="3.0"><!-- 配置自定义Servlet --><servlet><servlet-name>ServletExample</servlet-name><servlet-class>com.servletexample.servlet.ExampleServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><!-- 映射自定义Servlet --><servlet-mapping><servlet-name>ServletExample</servlet-name><!-- 配置拦截ServletExample请求 --><url-pattern>/ServletExample</url-pattern></servlet-mapping></web-app>

3、将项目部署的tomcat中后启动tomcat,在页面地址输入:http://localhost:8080/ServletExample/ServletExample ,控制台会输出service。


七、init(ServletConfig config)方法参数 ServletConfig接口:

ServletConfig接口实现类为:org.apache.catalina.core.StandardWrapper类得到实例对象后,再进过tomcat内部机制反射注入到init()方法中。

ServletConfig类主要作用可以获取到web.xml配置的参数,是局部性的,不能和其他Servlet所共享。获取到ServletContext对象实例(WEB应用上下文对象)

八、ServletContext对象:

1、每个WEB应用就有一个ServletContext对象控制着当前整个WEB应用。是一个全局性的储存信息的空间,服务器开始,就存在,服务器关闭,则释放。

一个用户可有多个requset和一个session,而ServletContext是整个WEB应用所有用户共用的一个。

2、在Servlet中得到ServletContext的两种方式


3、ServletContext的5大作用

①.获取web的上下文路径

  String getContextPath();

②.获取全局的参数

  String getInitParameter(String name);

  Enumeration getInitParameterNames();

③.和域对象相关的

  void setAttribute(String name,Onject object);

  Object getAttribute(String name);

  void removeAttribute(String name);

  域对象(域对象就是在不同资源之前来共享数据,保存数据,获取数据)

  ServletContext是我们学习的第一个域对象(Servlet共有三个域对象ServletContext、HttpServletRequest、HttpSession)

④. 请求转发的

  RequestDispatcher getRequestDispatcher(String path);

  在Servlet跳转页面:

  4.1请求重定向

    1.地址栏会改变,变成重定向到的地址

    2.可以跳转到项目内的资源,也可以跳转项目外的资源

    3.浏览器向服务器发出两次请求,那么不能使用请求来作为域对象来共享数据。

  4.2请求转发

    1.地址栏不会改变

    2.只能跳转到项目内的资源,不能跳转项目外的资源。

    3.浏览器向服务器发出一次请求,那么可以使用请求作为域对象共享数据。

⑤.读取web项目的资源文件

  String getRealPath(String path);

  InputStream getResourceAsStream(String path);

  URL getResource(String path);


原创粉丝点击