【问题标题】:Servlet mapping - unable to access my resources (css & js)Servlet 映射 - 无法访问我的资源(css 和 js)
【发布时间】:2017-03-04 19:34:57
【问题描述】:

我对 servlet 映射很困惑。据我了解

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

是不是所有的 xx.htm 都会进入这个 servlet。

我访问这 2 个网页没有问题(能够检索 css 和 js)

http://localhost:8080/smartcoursesystem/university.htm
http://localhost:8080/smartcoursesystem/home.htm

问题是当我走这条路时

http://localhost:8080/smartcoursesystem/university/edit.htm

在此页面上,我的所有资源(css 和 js)都丢失了。有什么问题?

我的调度器 servlet

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

<context:component-scan base-package="controller"/>
<mvc:annotation-driven/>
<mvc:default-servlet-handler />
<mvc:resources location="/assets/" mapping="/assets/**"/>

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"/>

<bean id="viewResolver" 
      class="org.springframework.web.servlet.view.InternalResourceViewResolver"
      p:prefix="/WEB-INF/jsp/"
      p:suffix=".jsp" />

Web.xml

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
    <welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>

控制器

@Controller
@RequestMapping(value="/university")
public class universityController {

public static String entity_name = "University";

@RequestMapping()
public String getAll(Model m){

    universityModel model = new universityModel();
    univCrsModel uc = new univCrsModel();
    m.addAttribute("univList", model.getAll());
    m.addAttribute("entity", entity_name);
    m.addAttribute("countUniv", model.countUniv());        

    return "all";
}

@RequestMapping(value="/edit", method=RequestMethod.GET)
public String edit(@RequestParam(value="id") int id, Model m){

    universityModel model = new universityModel();        
    m.addAttribute("univ", model.getUniv(id));
    m.addAttribute("entity", entity_name);

    return "edit";
}

edit.jsp

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Edit University Profile</title>
    </head>
    <body>
        <img src="/assets/images/icon-128x128.png" alt="smart course">
        //more code
    </body>
</htm>

我尝试将我的 url 模式更改为“/”,但没有帮助。事实上,将 url-pattern 更改为“/”会使我的欢迎文件无法正常工作。

【问题讨论】:

    标签: jsp spring-mvc model-view-controller netbeans


    【解决方案1】:

    你已经把所有的jsp文件放在了WEB-INF中,所以你所有的jsp页面只能通过springMVC请求访问,不能直接访问,js strong> 和 css 文件也无法访问。

    你知道jscss是静态文件,它们不需要通过springMVC请求访问,所以你可以让它们排除在viewResolver,只需将下面的代码添加到您 web.xml 并重新部署您的应用程序,它就会工作!

    <servlet-mapping>
       <servlet-name>default</servlet-name>
       <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
       <servlet-name>default</servlet-name>
       <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    

    【讨论】:

    • 嗨,感谢您的回复...在将上面的代码添加到 web.xml java.lang.RuntimeException: There is no web component by the name of default here. 后,我收到此错误。我需要创建一个默认的 servlet 名称吗?
    • @McSam 不,default 是保留的 servlet,你能告诉我你的 web.xml 的 sn-p 吗?也可以查看stackoverflow.com/questions/16505321/…
    • 我的 web.xml 中的所有代码都已显示在我的问题中。供您参考,我没有使用 maven。
    【解决方案2】:

    我已经通过替换解决了我的问题

    <img src="/assets/images/icon-128x128.png" alt="smart course">
    

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <c:set var="context" value="${pageContext.request.contextPath}" /> 
    <img src="${context}/assets/images/icon-128x128.png" alt="smart course">
    

    感谢热心回答

    【讨论】:

      猜你喜欢
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 2017-04-20
      • 2018-05-25
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      相关资源
      最近更新 更多