我想在 Spring 中创建一个 CMS,但在设置 2 个调度程序 servlet 时遇到问题。 (我也是 Spring 的新手)
我想要这样的结构:
app/...
(我的网站及其所有页面)
app/cms/...
(我的 cms 是网站的一部分,我可以在其中管理我的内容)
因此,我定义了 2 个调度程序 servlet:
<servlet>
<description></description>
<display-name>app</display-name>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
和
<servlet>
<description></description>
<display-name>cms</display-name>
<servlet-name>cms</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cms</servlet-name>
<url-pattern>/cms/*</url-pattern>
</servlet-mapping>
还有 2 个 xml 文件 cms-servlet.xml
和 app-servlet.xml
都具有正确的包位置和 jsp 解析器,具有正确的 jsp 文件位置
现在我正在尝试设置安全性和登录表单。我的security-context.xml
:
<security:http use-expressions="true">
<security:intercept-url pattern="/cms/login" access="permitAll" />
<security:intercept-url pattern="/resources/**" access="permitAll" />
<security:intercept-url pattern="/" access="permitAll" />
<security:intercept-url pattern="/cms/**" access="isAuthenticated()" />
<security:intercept-url pattern="/**" access="denyAll" />
<security:form-login login-page="/cms/login" />
</security:http>
问题是我收到错误:
Mai 18, 2014 10:35:32 PM org.springframework.web.servlet.PageNotFound noHandlerFound
WARNING: No mapping found for HTTP request with URI [/app/cms/login] in DispatcherServlet with name 'cms'
我的自定义login.jsp(当然带有Spring处理它的正确标签)位于cms jsp文件下。登录 Controller 位于我在 cms-servlet.xml
中定义的包中。如果我改变这2个:
<security:intercept-url pattern="/login" access="permitAll" />
<security:form-login login-page="/login" />
我的浏览器出现错误,提示此网页有重定向循环
。
问题是什么?我如何设置 2 个调度程序 servlet 正确吗?
PS:我的登录 Controller 来自 cms 包:
@RequestMapping("/login")
public String showLogin() {
return "login";
}
最佳答案
由于警告:
No mapping found for HTTP request with URI [/app/cms/login]
in DispatcherServlet with name 'cms'
您的 Controller 是否映射/cms
?像这样的东西:
@Controller
@RequestMapping("/cms")
public class CmsController {
@RequestMapping("/login")
public String showLogin() {
return "login";
}
关于java - spring 设置 2 个调度程序 servlet 和安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23726666/