2017-03-06 40 views
1

我想知道如何在WEB-INF的某个目录下直接访问JSP页面,并且在/路径上运行Spring,而无需为转发视图编写任何控制器。如何用Spring加载直接访问JSP页面?

例如,我有一个项目myapp结构如下:

src 
WebRoot 
`-- WEB-INF 
    |-- public 
    | `-- example.jsp 
    |-- views 

现在,我想直接前往http://localhost/myapp/public/example没有实施任何控制器访问example.jsp

我试过到目前为止:

  1. 添加<mvc:resources mapping="/public/**" location="/WEB-INF/public/"/>到我的上下文XML,但它只是将无法正常工作,容器不断抱怨HTTP 404 - PAGE NOT FOUND /public/example.jsp

  2. 将内部资源视图解析器添加到我的上下文xml。

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

    ,但我不知道下一步该怎么做,我也许把很多JSP页面/WEB-INF/public下,所以写控制器为他们每个人将是乏味的。

是否有任何规范的方式来做到这一点?请帮忙!

+0

你想要做这样的事情浏览器类型/这重定向example.jsp页? –

+0

@ T.Jung问题已更新。 –

+0

你甚至不应该尝试。如果您需要直接访问JSP,则应将其存储在WEB-INF之外。 JSP不是一个**静态**资源。它通过servlet容器编译成servlet,并且该编译代码由servlet容器调用。 –

回答

1

弹簧mvc我们有一个选项 <mvc:view-controller path="/" view-name="example"/>。 HTTP://本地主机:8080/MyApp的/家是我的权利

,当你在

+0

它解决了我的问题,但是,查看名称应该是'public/example' –

+0

@JerryChin:''行确实声明了一个控制器来服务于视图... –

+0

@SergeBallesta但在我的情况下,这是解决问题的最简单方法。你不这么认为吗? –

1

尝试类似的东西在你的分发程序Servlet:

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

当JSP文件夹中包含了JSP文件。从控制器你可以直接使用jsp名称。你不需要提及上述定义的jsp文件夹。

+0

我想直接从浏览器**访问JSP页面**而没有实现控制器,上面的工作是否会起作用? –

+0

您已标记spring mvc,其中'c'表示控制器...您应该使用控制器处理请求映射并加载jsps –

+0

如果只有一个自包含的JSP页面,并且我希望用户直接访问它,就像访问静态资源的方式一样,我该怎么做? –