【问题标题】:Tomcat does not pick up the class file - the JSP file is not displayedTomcat 不拾取类文件 - 不显示 JSP 文件
【发布时间】: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 springDispatcherServlet。从 sn-p 来看,spring servlet 似乎只会处理像http://&lt;host&gt;/&lt;context&gt;/app/... 这样的请求。如果是这种情况,也不应该调用家庭控制器。请检查您是否有其他映射,如果有,则它们已正确映射。
  • 确实如此……但是,我确实看到了 HomeController 的网页,即 home.jsp。所有其他网页都以这种形式出现:localhost:8080/adcopyqueue/<rest of address> like:localhost:8080/adcopyqueue/mypage 老实说我不知道​​原因!

标签: java jsp jakarta-ee tomcat


【解决方案1】:

好的,这就是原因......我的经理回答了......也许它可以帮助将来的人:-)

在 urlrewrite.xml 中,设置了以下规则:

<!-- Add rules here for anything that shouldn't be served up by Spring MVC. -->

所以我们注释了以下几行以跳过规则:

<rule>
    <from>/login*</from>
    <to>/login.jsp</to>
</rule>
<rule>
    <from>/logout*</from>
    <to>/logout.jsp</to>
</rule>

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 2023-01-21
    • 1970-01-01
    • 2011-06-04
    • 2011-12-11
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多