我正在学习 Spring 3.1。
我的网络应用程序名称是“acme”。
网址大致是https://blah.blah.blah/acme
该 URL 设置为显示login.jsp
我的控制器中有一个“/ login”映射,我的 login.jsp 提交到该映射
如果出现问题,它会在浏览器中使用以下 URL 将用户返回到login.jsp : https://blah.blah.blah/acme/login
“/login”映射设置为处理 POST 请求,所以我担心用户将 https://blah.blah.blah/acme/login 加入书签,并收到“不支持 GET 请求”的错误消息
所以,我想我会放入一个函数来处理对 /login 的 GET 请求,以通过我的“/”和“/home”的通用映射处理程序重新路由:
登录控制器.java
package gov.noaa.acme.controller;
import java.security.Principal;
import javax.servlet.http.*;
import org.springframework.stereotype.Controller;
import org.springframework.validation.*;
import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.apache.log4j.Logger;
@Controller
public class LoginController {
private static final Logger logger = Logger.getLogger(LoginController.class);
@RequestMapping({"/","home"})
public String home(ModelMap model,HttpSession session,HttpServletRequest request) {
// Do some stuff
return "login";
}
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login_get(){
logger.debug("started...");
return "forward:home";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute("laph") LAPH laph,
BindingResult bindingResult,
ModelMap model,
HttpSession session,
HttpServletRequest request,
HttpServletResponse response,
@RequestParam(required=true) String last_usertype) {
if (bindingResult.hasErrors()) {
logger.debug("Error returning home");
return "home";
}
logger.debug("Started ....");
// Do authentication
if (!isAuthenticated) {
model.put("status_message", error_message);
return "login";
}
// success, send newly authenticated user to a search page
nextView = "search";
return "redirect:" + nextView;
}
}// end class LoginController
我的日志显示我什至没有达到处理 /login 的 GET 请求的控制器方法,我仍然收到 /login 不支持 GET 的错误消息。
关于如何解决这个问题的任何想法?
谢谢
史蒂夫