在.jsp页面上未触发控制器命中MVC Spring JAVA

在.jsp页面上未触发控制器命中MVC Spring JAVA,java,spring,jsp,spring-mvc,controller,Java,Spring,Jsp,Spring Mvc,Controller,试图让SpringMVC控制器在我的web项目中的.jsp页面被直接命中时启动 dispatcher servlet的Web XML: <servlet> <servlet-name>MYAPP</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>

试图让SpringMVC控制器在我的web项目中的.jsp页面被直接命中时启动

dispatcher servlet的Web XML:

    <servlet>
<servlet-name>MYAPP</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
<servlet-name>MYAPP</servlet-name>
<url-pattern>/*</url-pattern>
    </servlet-mapping>
在根目录下,我在/WebContent/customer/customer.jsp中有一个jsp页面 如果在浏览器中,我点击了,控制器会处理上面的customer方法。但是,如果我点击,那么控制器永远不会启动,只呈现customer.jsp页面。当.jsp页面被点击时,如何让控制器进行处理

  • 将JSP放在WEB-INF目录中-这将阻止用户直接访问JSP。如果没有步骤2,用户将得到404/
  • 您可以将控制器映射更新为类似于
    @RequestMapping(“/customer*”)
    ——但要非常小心
  • 但是,如果我打了,那么 控制器从不开火

    你为什么期望它会这样?您的
    @Controller
    的处理程序方法映射到

    @RequestMapping("/customer")
    
    这就是它将处理的路径。如果希望它处理其他路径,请添加其他路径或更多处理程序方法

    至于呈现JSP的原因,那是因为它位于web应用程序的
    WebContent
    文件夹中。那里的任何文件都可以直接访问

     package com.mydomain.controllers;
    
     import javax.servlet.http.HttpServletRequest;
     import org.springframework.stereotype.Controller;
     import org.springframework.web.bind.annotation.RequestMapping;
     import org.springframework.web.bind.annotation.RequestMethod;
     import org.springframework.web.servlet.ModelAndView;
     import com.mydomain.security.Authorization;
    
     @Controller
     public class CustomerController {
    
    
    @RequestMapping("/customer")
    public String customer(HttpServletRequest request) {
        if (Authorization.SessionCheck(request))
            return "../customer/customer";
        else
            return "redirect:http://elsewhere.com"; 
    
    }
    
      }
    
    @RequestMapping("/customer")