404错误,请求的资源[/chapter05/LastAccessServlet]不可用

404错误,请求的资源[/chapter05/LastAccessServlet]不可用

问题描述:

报错内容:
HTTP Status 404 – Not Found
Type Status Report

Message 请求的资源[/chapter05/LastAccessServlet]不可用

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/8.5.72

LastAccessServlet.java内容:

package cn.itcast.servlet;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LastAccessServlet
 */
@WebServlet("/LastAccessServlet")
public class LastAccessServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LastAccessServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html;charset=UTF-8");
        String lastAccessTime = null;
        Cookie[] cookies= request.getCookies();
        for(int i=0;cookies!=null&&i<cookies.length;i++) {
            if("lastAccess".equals(cookies[i].getName())) {
                lastAccessTime = cookies[i].getValue();
                break;
            }
        }
        if(lastAccessTime ==null) {
            response.getWriter().println("您是首次访问本站!!!");
        }else {
            response.getWriter().println("您上次访问本站的时间是:"+lastAccessTime);

        }
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");
        String currentTime = sdf.format(new Date());
        Cookie cookie = new Cookie("lastAccess",currentTime);
        cookie.setMaxAge(60*60);
        response.addCookie(cookie);
    }

    /**
     * @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);
    }

}

web.xml内容:
```xml

<?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>chapter05</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>
</web-app>

```

img


URLPattern是用来匹配url的,应该是@WebServlet(name = "name", urlPatterns = "/chapter05/LastAccessServlet",是springboot项目吗,如果是,需要扫描servlet,入口类上要添加@ServletComponentScan