好的,我知道这里有20个帖子有同样的问题,但是没有一个对我有帮助,所以这可能是重复的,但是我已经检查了所有其他帖子,没有一个解决了我的问题,所以一定有什么地方我做错了,或者我没有从前面提到的问题的答案中做正确的修改。
我正在尝试使用Spring制作一个小应用程序,我还在试验它,但我花了大约4天的时间试图找出问题所在,但我就是做不到。每当我试图从控制器获取jsp时,我仍然会得到HTTP状态404。除了通过Tomcat获得404状态外,没有别的。。。
WebAppController:
@Controller
public class WebAppController {
@RequestMapping(value="/login", method = RequestMethod.GET)
public String login() {
System.out.println("You have entered the login maprequest");
return "test1";
}
}
web.xml:
<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_2_5.xsd"
version="2.5">
<display-name>Hotel Application</display-name>
<servlet>
<servlet-name>WebApp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WebApp</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
网络应用。xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="com.iquestgroup" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
这种配置适用于一个简单的maven项目,其中只包含上述内容。问题是,在一个包含3个模块(持久性、服务和webapp)的maven项目中,完全相同的东西不起作用。在webapp中,我复制了完全相同的东西,当我在服务器上运行它时,我得到404 http状态。。。尽管模块正在成功构建。
L.E.公认答案的第一部分是指那些从Spring开始的人所犯的一个常见的servlet映射错误。我的问题与此无关,在最初的回答之后,我最终将其删除。为了不让读者感到困惑,公认答案的第一部分引用了以下代码:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
首先,您可以使用下面的任何根控制器进行监听/请求。
@Controller
@RequestMapping ("/")
public class RootCtrl {
Logger logger = Logger.getLogger(RootCtrl.class);
@RequestMapping (value = "/", method = {RequestMethod.GET, RequestMethod.POST})
public String index(ModelMap model) {
// redirect to login page
return "redirect:admin/index";
}}
使用该控制器,您将所有请求映射到root。然后您可以将请求重定向到登录控制器。
这都是关于请求映射的。您的loginController或webController应该侦听一个请求,该请求应该在之前指定。在我的应用程序中,登录控制器监听/admin请求路径。然后,我的登录控制器如下所示:
@Controller
@RequestMapping ("/admin")
public class LoginCtrl {
@RequestMapping (value = "/index", method = {RequestMethod.GET, RequestMethod.POST})
public String index(@RequestParam (value = "captchaId", defaultValue = "") String captchaId, ModelMap model, HttpServletRequest request, HttpServletResponse response) {
if(StringUtils.isNullOrEmpty(captchaId)){
captchaId = RandomGUID.getRandomGUID();
}
model.addAttribute("captchaId", captchaId);
// redirect to login page
return "login";
}
当您将从此路径获得请求时:localhost/SampleProject/admin/index.映射将起作用。
改变
<url-pattern>/*</url-pattern>
到
<url-pattern>/</url-pattern>
目前,由于/*
,映射的DispatcherServlet
被标记为处理所有请求。这意味着它还将尝试处理发送到/WEB-INF/jsp/test1的请求。jsp
。它显然没有相应的处理程序,而且会失败。
模式/
的特殊之处在于,如果没有其他模式匹配,它是默认的回退模式。如果有一个映射到请求路径的Servlet
,那么在映射的DispatcherServlet
之前将选择该Servlet
。
大多数(可能是所有)Servlet容器都映射了一个Servlet来处理带有*. jsp
的url-模式
的呈现JSP。这将优先于映射到/
的DispatcherServlet。
如果在这些更改后您仍然获得404,那么有一些可能性。
在INFO级别的Spring日志-它注册的任何处理程序方法(@Controller
bean中的@Request estMap
注释的方法)。如果您在日志中没有看到任何这些,那么您的Web应用程序没有被正确/成功地部署。
如果您的Servlet容器嵌入到您的IDE中,请检查部署的应用程序上的相应选项卡/视图。如果它是独立的,请检查您生成的. war
文件是否在适当的目录中并正确展开。
我对laravel是个新手,我总是在浏览器控制台中收到这个错误消息 源地图错误:请求失败,状态404 资源地址:超文本传输协议://[myurl]/js/app.js 源地图地址:popper.js.map 我不知道问题出在哪里。当我尝试访问应用程序时。js文件通过URL工作。 我有第二个项目与完全相同的设置,我没有得到任何错误。我不知道我错过了什么。
我在youtube上按部就班地学习教程,但我没有得到结果。代码如下: 主要应用 或来自Chrome的以下内容: 白标签错误页 此应用程序没有/error的显式映射,因此您将其视为一种后退。
这是我的控制器,它将请求映射到以下url
问题内容: 我刚刚更新了Angular + Ionic的新版本,并且处理远程请求的方法停止工作并始终返回404响应。 请求如下: 处理远程请求的方法的代码如下: 但是没有运气。 服务器端通过这种方式处理请求: 如果我试图使用邮递员或卷曲发送请求,一切似乎都在工作。 离子信息: AngularJS版本: 我该如何解决? 非常感谢您的任何建议 问题答案: 哼,我只是遇到了同样的问题:标头表明它已经被拿
我正在制作一个简单的程序,以几个字段作为输入,然后点击确认按钮后,confirm.jsp将出现。 我创建了Controller.java servlet来标识单击的按钮,然后打开JSP。controller.java存储在web-inf/classes/ch2/servletController目录中,而submit.jsp、register.jsp、confirm.jsp存储在/ch2/serv
我在一个spring mvc应用程序中工作(我在spring mvc中是新的)。