【问题标题】:is it possible not to include the folder inside the WEB-INF in url in spring mvc是否可以不在spring mvc的url中包含WEB-INF内的文件夹
【发布时间】:2016-06-22 04:32:11
【问题描述】:

我有使用spring mvc的项目,并对WEB-INF文件夹下不同文件夹中的所有视图进行排序。为了让我访问视图,我需要在 url 中定义这样的特定文件夹。 http://localhost:8080/ProjectName/FolderUnderWEB-INF/thejspfile 例如http://localhost:8080/StationControl/includes/SuccessTemp 但我已经在我的 servlet 中定义了这个

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/includes/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

我的问题是我不想在 URL 中显示包含文件夹,我该怎么做?我遇到了这个问题,提前感谢您的帮助。

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    可以访问WEB-INF目录上面的文件和文件夹。例如,index-1.jsp 的 URL 在 Web 浏览器中将是 http://localhost:8080/test-web/index-1.jsp。您可以将index-1.jsp 放在WEB-INF 目录上方的文件夹中,您的页面应该可以通过Web 浏览器访问。此外,请检查以确认路径与配置和 Web 描述符文件中的 Spring 请求映射不冲突。

    在您的spring-mvc.xml 或您的任何名称中,应包含如下定义的 MVC 注释和资源映射。

    <mvc:resources mapping="/SuccessTemp/**" location="<path to folder>" cache-period="31556926"/>
    <mvc:annotation-driven />
    

    您可以通过网络浏览器获取文件。该 URL 将是 http://localhost:8080/StationControl/SuccessTemp/&lt;path to file&gt;

    更新截图

    从截图来看,jQuery 的 URL 在浏览器中是http://localhost:8080/test-web/scripts/jquery/jquery-3.0.0.js

    【讨论】:

    • @jsmweb :感谢您的回复,是的,我明白了,但是如果我将 jsp 文件放在 WEB-INF 之外,那么用户可以访问它。我想在这里实现的是我想在我的网络浏览器中输入的网址是localhost:8080/StationControl/SuccessTemp 而不是这个localhost:8080/StationControl/includes/SuccessTemp,这可能吗?
    • 你可以这样做。您的项目名称应为StationControl,是webapp 目录下的子文件夹SuccessTemp,url 为http://localhost:8080/StationControl/SuccessTemp/&lt;path to the file&gt;。请用您的结果更新我们。
    • 当我在浏览器中尝试这个 localhost:8080/StationControl/SuccessTemp 时,请求的资源不可用,但是当我放置文件夹时,localhost:8080/StationControl/includes/SuccessTemp 很好。但我不想要这个。我的子文件夹是包含, SuccessTemp 是 jsp 文件。呵呵,我与这个问题纠缠不清,花了将近两天的时间搜索并找到解决此问题的方法。大声笑,直到现在我找不到办法。
    • 在我的 web.xml 我已经定义了 url 模式,就像这样 StationControl-servlet/includes/*
    • 我已经更新了对您问题的回答。我建议使用&lt;mvc:resources/&gt;&lt;mvc:annotation-driven/&gt; 标签。
    【解决方案2】:

    把你所有的jsp文件直接放在/WEB-INF/includes/ 并将前缀值配置为 /WEB-INF/includes/ 后缀值为 .jsp 并且您的控制器的请求映射设置为仅从您调用 jsp 文件的位置的“/SuccessTemp” 那么它不会在您的 URL 中添加包含文件夹名称。

    @Controller
    public class HomeController {
    
    @RequestMapping(value = "/SuccessTemp", method = RequestMethod.GET)
        public String callSuccessTemp() {
    
            return "SuccessTemp";
        }
    

    还配置资源处理程序如下

    <mvc:resources mapping="/**" location="/resources/" cache-period="31556926"/>
    <mvc:annotation-driven />
    

    【讨论】:

    • 是的,我已经这样做了。谢谢,但仍然是同样的问题。找不到页面.. :)
    猜你喜欢
    • 2012-12-30
    • 2019-03-11
    • 2017-01-04
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多