我的情况是: 我有一个主页,有一个名为"登录的链接"在我的主页上,当我点击"登录"链接,浏览器显示" HTTP状态[404] - [未找到]"。 我想要的是:当我点击"登录"链接,我希望网站直接到新页面,这是登录页面。谢谢!
homepage.jsp:
<li><a class="drop" href="#">My Account</a>
<ul>
<li><a href="login.html">Sign In</a></li>
<li><a href="#">Create Account</a>></li>
</ul>
</li>
&#13;
的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>TooO</display-name>
<welcome-file-list>
<welcome-file>homepage.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>crunchify</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login.jsp</url-pattern>
<url-pattern>/login.html</url-pattern>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
&#13;
登录-servlet.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/jsp/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="com.crunchify.controller" />
</beans:beans>
&#13;
LoginController.java:
package com.crunchify.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class LoginController {
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String init(Model model) {
model.addAttribute("msg", "Please Enter Your Login Details");
return "login";
}
@RequestMapping(method = RequestMethod.POST)
public String submit(Model model, @ModelAttribute("loginBean") LoginBean loginBean) {
if (loginBean != null && loginBean.getUserName() != null & loginBean.getPassword() != null) {
if (loginBean.getUserName().equals("chandra") && loginBean.getPassword().equals("chandra123")) {
model.addAttribute("msg", "welcome" + loginBean.getUserName());
return "success";
} else {
model.addAttribute("error", "Invalid Details");
return "login";
}
} else {
model.addAttribute("error", "Please enter Details");
return "login";
}
}
}
&#13;
答案 0 :(得分:0)
初始化两个 Spring Servlet - 这不是它的工作方式。
只创建一个SpringDispatcher并指定一个简单的URL模式
<servlet>
<servlet-name>crunchify</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>crunchify</servlet-name>
<url-pattern>/crunch/*</url-pattern>
</servlet-mapping>
现在所有对像crunch / *这样的事情的调用将被引导到Spring。
在LoginController中给出@RequestMapping
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String init(Model model) {
现在这将导致以下URL实际到达登录控制器:
/crunch/login
^ ^
| will be routed into LoginController by Spring
will be routed to Spring by Servlet Container
现在相应地修改您的登录链接:
<ul>
<li><a href="crunch/login">Sign In</a></li>
<li><a href="#">Create Account</a>></li>
</ul>
再试一次。