java – Spring 3简单的无扩展url映射与基于注释的映射 – 不可能?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring 3简单的无扩展url映射与基于注释的映射 – 不可能?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3326字,纯文字阅读大概需要5分钟。
内容图文
![java – Spring 3简单的无扩展url映射与基于注释的映射 – 不可能?](/upload/InfoBanner/zyjiaocheng/798/f5559d644bda4a608895554fb4f292c7.jpg)
我正在使用Spring 3,并尝试使用注释来设置一个简单的Web应用程序来定义控制器映射.如果没有使用* .form或* .do对所有网址进行处理,这似乎是非常困难的
由于网站的某些部分需要受密码保护,因此这些网址都在/安全之下.有一个< security-constraint>在web.xml中保护该根目录下的所有内容.我想将所有Spring控制器映射到/ secure / app /.
示例网址将是:
/安全/应用/的LandingPage
/安全/应用/编辑/客户/ {ID}
我将用适当的jsp / xml /其他方法处理每一个.
所以,在web.xml中我有这个:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/secure/app/*</url-pattern>
</servlet-mapping>
在despatcher-servlet.xml中我有这个:
<context:component-scan base-package="controller" />
在Controller包中,我有一个控制器类:
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("/secure/app/main")
public class HomePageController {
public HomePageController() { }
@RequestMapping(method = RequestMethod.GET)
public ModelAndView getPage(HttpServletRequest request)
{
ModelAndView mav = new ModelAndView();
mav.setViewName("main");
return mav;
}
}
在/ WEB-INF / jsp下我有一个“main.jsp”,并设置了一个合适的视图解析器来指向它.我使用* .form映射调度程序时有些工作,但使用上面的代码无法获得任何工作.
当Spring启动时,它似乎正确映射所有内容:
13:22:36,762 INFO main annotation.DefaultAnnotationHandlerMapping:399 - Mapped URL path [/secure/app/main] onto handler [controller.HomePageController@2a8ab08f]
我也注意到这条线看起来很可疑:
13:25:49,578 DEBUG main servlet.DispatcherServlet:443 - No HandlerMappings found in servlet 'dispatcher': using default
在运行时,任何查看/ secure / app / main的尝试都会在Tomcat中返回404错误,并输出以下日志:
13:25:53,382 DEBUG http-8080-1 servlet.DispatcherServlet:842 - DispatcherServlet with name 'dispatcher' determining Last-Modified value for [/secure/app/main]
13:25:53,383 DEBUG http-8080-1 servlet.DispatcherServlet:850 - No handler found in getLastModified
13:25:53,390 DEBUG http-8080-1 servlet.DispatcherServlet:690 - DispatcherServlet with name 'dispatcher' processing GET request for [/secure/app/main]
13:25:53,393 WARN http-8080-1 servlet.PageNotFound:962 - No mapping found for HTTP request with URI [/secure/app/main] in DispatcherServlet with name 'dispatcher'
13:25:53,393 DEBUG http-8080-1 servlet.DispatcherServlet:677 - Successfully completed request
那么…… Spring映射一个URL,然后在一秒钟之后“忘记”该映射?到底是怎么回事?
谢谢.
解决方法:
我和你有完全相同的问题.设置’alwaysUseFullPath’的方法非常简单.我的conf文件如下:
<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"
p:order="3" > <!-- a higher value meaning greater in terms of sorting. -->
<property name="alwaysUseFullPath" value="true" />
<property name="interceptors">
<list>
<ref local="myInterceptor" />
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="alwaysUseFullPath" value="true" />
</bean>
内容总结
以上是互联网集市为您收集整理的java – Spring 3简单的无扩展url映射与基于注释的映射 – 不可能?全部内容,希望文章能够帮你解决java – Spring 3简单的无扩展url映射与基于注释的映射 – 不可能?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。