java - 使用 "/"创建 servlet url-pattern

标签 java jsp servlets servlet-filters servlet-3.0

我创建了名为 MainContent 的 servlet。我有这样的映射

<servlet>
    <display-name>MainContent</display-name>
    <servlet-name>MainContent</servlet-name>
    <servlet-class>ge.test.servlet.MainContent</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MainContent</servlet-name>
    <url-pattern>/main</url-pattern>
</servlet-mapping>

所以,当我转到链接时: //localhost:8080/MyAppl/main 我进入 servlet doGet() 方法。然后我创建 RequestDispatcher 转发到 index.jsp。

一切正常!

RequestDispatcher rd = context.getRequestDispatcher("/index.jsp?language="+ lang);
rd.forward(request, response);

一切正常!

问题:

现在我需要更改 url-pattern。我需要类似的东西-:当我进入 localhost:8080/MyAppl/ 时,我需要重定向到我的 servlet。 所以我创建了类似的东西:

<url-pattern>/</url-pattern>

好的,成功了!我被重定向到 servlet。 但是这里发生了一些问题。当Servlet创建RequestDispatcherforward时,我的index.jsp中没有图像和CSS。 当我在 firebug 控制台中看到时,我看到了错误:

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:8080/MyApp/font/font_big.css". localhost/:15
Resource interpreted as Image but transferred with MIME type text/html: "http://localhost:8080/MyApp/IMG/company.gif".

我该如何解决这个问题?

最佳答案

是的,就像 @DwB 指出的那样,“/”上下文是有问题的 URL 模式,它会导致您的问题。

使用

<servlet-mapping>
    <servlet-name>MainServlet</servlet-name>
    <url-pattern></url-pattern>
</servlet-mapping>

相反。这是“servlet 3.0 方式”来做到这一点。

来源

[1] http://www.coderanch.com/t/366340/Servlets/java/servlet-mapping-url-pattern

[2] How can I map a "root" Servlet so that other scripts are still runnable?

关于java - 使用 "/"创建 servlet url-pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18408805/

相关文章:

tomcat - ReSTLet css 和 javascript 文件

Java Servlets + 状态 = 如何?

java - 正则表达式拒绝 '_'

java - Android {Java} 中的 XML 解析

java - 在数据库中插入 clob 数据或所有类型的文件存储

jsp - Spring MVC返回要在 View 中显示的服务层错误代码

java - 在 Java Servlet 中下载 CSV 文件

java - 从tomcat生成的HTML中的servlet中调用方法

java - Eclipse:如何自动编译动态 Web 项目中的源代码

java - Ajax HTTPServlet 请求不会将信息从 ajax 传递到 Controller