Tomcat配置和servlet创建(eclipse)、重定向和转发

一、Tomcat下载和安装

1、首先去官网下载Tomcat的zip包;
链接:http://tomcat.apache.org/

2、通过server,添加对应版本的Tomcat,选则custom(找到下载的包的路径)

二、Servlet访问路径配置

servlet:

  1. 路径问题:

    a.通过插件@WebServlet("/servlet")

    b.通过web.xml里面配置

    如果两个都配置了,两个路径都可以访问

<?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" 
metadata-complete="false" 
version="3.0">
<!-- metadata-complete 是否扫描插件的注解, false:扫描 true:不扫描 -->
  <servlet>
    <servlet-name>wtx</servlet-name>
    <servlet-class>com.wtx.servlet.FirstSevlet</servlet-class>
    <!--启动优先级,加上这句话服务器启动就会执行-->
    <load-on-startup>4</load-on-startup>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>wtx</servlet-name>
    <url-pattern>/first</url-pattern>
  </servlet-mapping>

servlet访问静态资源

web.xml里面找url-patten没有缺省的-->全局的web.xml里面找缺省的("/")-->default-->去工程根目录找-->index.html

插件设置Servlet访问url

/**
 * Servlet implementation class WtxServlet
 */
方法一: @WebServlet("/wtxServlet")
方法二:@WebServlet(name = "www", urlPatterns = {"/OneServlet", "/One"},loadOnStartup = -1) //loadOnStartup != -1加上服务器启动就会init


public class WtxServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see Servlet#init(ServletConfig)
     */
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub
    }

    /**
     * @see Servlet#destroy()
     */
    public void destroy() {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
     */
    //当每次请求的时候就会调用此方法
    //一但你写了service就不会再去找doget 或dopost
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

三、设置响应头和重定向(发送两次请求,地址栏会变)

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        //设置响应行 设置状态码
        response.setStatus(200);
        
        //添加响应头
        
        response.addHeader("name", "test");
        
        response.addIntHeader("age", 10);
        response.addDateHeader("my-Date", new Date().getTime());
        
        response.addHeader("name", "charles");
        
        
        //修改响应头
        response.setHeader("name", "charles_w");
        response.setIntHeader("age", 100);
        response.setDateHeader("my-Date", new Date().getTime());
        
        //设置重定向
        //访问两次-第一次是ResponseServlet,第二次是LocationServlet
        response.setStatus(302);
        //response.setHeader("location", "/26-Servlet/LocationServlet");
        //不用写location
//      response.sendRedirect("/26-Servlet/LocationServlet");
        //定时刷新重定向  隔3秒钟才去转发
        //response.setHeader("refresh","3;url=http://www.baidu.com");
        
        
        //设置缓存区当中使用的编码 UTF-8
        //response.setCharacterEncoding("UTF-8");
        
        //在响应当中主动告诉浏览使用什么样的编码来接收
        //response.setHeader("Content-Type", "text/html;charset=UTF-8");
        //可以使用简写 放在设置响应体之前来设置编码
        response.setContentType("text/html;charset=UTF-8");
        
        //设置响应体 
        //写字符
        response.getWriter().write("响应数据");
        //如果字符当中有html浏览器会帮你解析
        response.getWriter().write("<h1>666</h1>");
        //写中文
        response.getWriter().write("我是666");
        
    }

四、ServletContext 全局的对象

//设置内容
this.getServletContext().setAttribute("checkCode", "设置的内容");

//获取设置的内容
this.getServletContext().getAttribute("checkCode");

五、请求转发(发送一次请求,地址栏不会变)

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println(request);
    // 请求转发
    //1.获取转发器
    //Servlet2 是另一个Servlet
    RequestDispatcher disp = request.getRequestDispatcher("/Servlet2");
    //域  能够存储数据 
    request.setAttribute("key", "value666");
    //2.转发
    disp.forward(request, response);
        
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容