【发布时间】:2011-11-17 17:47:29
【问题描述】:
我有一个Java 代码,它是一个jsp 页面的控制器,名为:HomeController.java。代码如下:
@Controller
public class HomeController {
protected final transient Log log = LogFactory.getLog(getClass());
@RequestMapping(value = "/mypage")
public String home() {
System.out.println("HomeController: Passing through...");
return "home";
}
}
jsp页面没有什么特别的:home.jsp。如果我去这个网址:
http://localhost:8080/adcopyqueue/mypage
我可以查看我的页面,一切正常。同样在tomcat Dos页面我可以看到评论:
HomeController: Passing through...
正如预期的那样。
现在在我拥有 HomeController.java 的同一目录下,我创建了另一个名为:LoginController.java 的文件。以下是代码:
@Controller
public class LoginController {
protected final transient Log log = LogFactory.getLog(getClass());
@RequestMapping(value = "/loginpage")
public String login() {
System.out.println("LoginController: Passing through...");
return "login";
}
}
在我拥有 home.jsp 的同一个地方,我创建了 login.jsp。
同样在tomcat文件夹下,LoginController.class和HomeController.class在同一个文件夹下,login.jsp在home.jsp同一个文件夹下。
但是当我访问这个网址时:http://localhost:8080/adcopyqueue/loginpage
什么都没有显示!我认为tomcat不会在tomcat Dos窗口上选择LoginController.class b/c,我没有看到这个评论:
LoginController: Passing through...
相反,我看到以下内容,我不知道它们是什么意思?
[ INFO] [http-8080-1 01:43:45] (AppInfo.java:populateAppInfo:34) got manifest
[ INFO] [http-8080-1 01:43:45] (AppInfo.java:populateAppInfo:36) manifest entrie
s 8
HomeController.java 和 LoginController.java 的结构和代码加上 jsp 文件匹配。我不知道为什么 tomcat 看到其中一个文件而不是另一个?
干净的构建没有帮助。有人知道吗?非常感谢任何帮助。
这是 web.xml 的一部分:配置文件:
<servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/app/*</url-pattern> </servlet-mapping> <filter-mapping> <filter-name>rewriteFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> –
刚刚发现: 我将 LoginController 中方法的返回值修改为:
@RequestMapping(value = "/login")
致关注:
@RequestMapping(value = "/myLastName")
而且效果很好!网页按预期显示,在 Tomcat Dos 窗口中,现在我看到了这条评论:
LoginController:通过...
我之前确实怀疑过命名,并尝试过使用“login”、“loginpage”和“loginpage1”,但都没有奏效!不知道为什么会这样!任何名称中带有“登录”一词的名称都有问题!最终它应该与“登录”一起使用!!!
我刚刚注意到的另一件事: 只要 value="/ 任何以 login" 开头的名称,LoginController 就不会工作
所以对于前。登录,登录页面,...将无法正常工作。但是,pagelogin 有效,这意味着名称不应以单词开头:login。
【问题讨论】:
-
你能从 web.xml 中发布任何相关的 sn-p 吗?
-
这里是 web.xml,但不确定它是否有帮助...
spring /app/* rewriteFilter /* -
spring /app/* rewriteFilter /* -
我假设 servlet spring 是
DispatcherServlet。从 sn-p 来看,spring servlet 似乎只会处理像http://<host>/<context>/app/...这样的请求。如果是这种情况,也不应该调用家庭控制器。请检查您是否有其他映射,如果有,则它们已正确映射。 -
确实如此……但是,我确实看到了 HomeController 的网页,即 home.jsp。所有其他网页都以这种形式出现:localhost:8080/adcopyqueue/<rest of address> like:localhost:8080/adcopyqueue/mypage 老实说我不知道原因!
标签: java jsp jakarta-ee tomcat