新手spring,controller没有被调用问题

在index.jsp上登录——>login.jsp页面。

login.jsp上有两个静态的连接add.jsp和sel.jsp

然后点add.jsp 是一个添加用户的表单 输入数据提交后

没有任何显示 debug报:

2015-11-20 11:06:56,613 [http-bio-9090-exec-10] DEBUG [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] - Looking up handler method for path /view/adduser
2015-11-20 11:06:56,616 [http-bio-9090-exec-10] DEBUG [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] - Did not find handler method for [/view/adduser]
2015-11-20 11:06:56,617 [http-bio-9090-exec-10] DEBUG [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] - Matching patterns for request [/view/adduser] are [/**]
2015-11-20 11:06:56,617 [http-bio-9090-exec-10] DEBUG [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] - URI Template variables for request [/view/adduser] are {}
2015-11-20 11:06:56,617 [http-bio-9090-exec-10] DEBUG [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] - Mapping [/view/adduser] to HandlerExecutionChain with handler [org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler@6aa25d] and 1 interceptor
2015-11-20 11:06:56,618 [http-bio-9090-exec-10] DEBUG [org.springframework.web.servlet.DispatcherServlet] - Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling
2015-11-20 11:06:56,618 [http-bio-9090-exec-10] DEBUG [org.springframework.web.servlet.DispatcherServlet] - Successfully completed request

我的controller :

@RequestMapping("/adduser")
public ModelAndView addUser(ModelMap model, HttpServletRequest request, HttpServletResponse response) {
    ModelAndView mav = new ModelAndView("adduser");
    System.out.println("添加controller被调用");
    Integer userId = Integer.parseInt(request.getParameter("id").trim());
    String userName = request.getParameter("uname").trim();
    String userPassword = request.getParameter("upass").trim();
    String userEmail = request.getParameter("email");
    User user =userService.addUser(userId, userName, userPassword, userEmail);
    System.out.println(user);
    return mav;
}


    <mvc:annotation-driven />
<mvc:default-servlet-handler /> 的配置和

    <!-- 拦截设置 -->
<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>都有配置。


控制台上并没有被调用的信息。请问为什么?

7个回答

Did not find handler method for [/view/adduser]没有这路径,不是/adduser它,可以在你controller类上面加上@RequestMapping(“/view”)

qq_32763435
qq_32763435 已经解决了。谢谢。
4 年多之前 回复

可以在你的类名上和方法上分别添加对应的注解信息试试,例如下面这样:
@Controller
@RequestMapping("login")
public class LoginController {

@RequestMapping(value = "adduser", method = RequestMethod.GET)
@ResponseBody
public BaseMessage queryResult(@RequestParam(value = "account", required = false) final String account,
        @RequestParam(value = "mobile", required = false) final String mobile) {
    BaseMessage msg = new BaseMessage();
    //调用你相应的service方法
    return msg;
}
    }
qq_32763435
qq_32763435 感谢参与,给你个赞,问题解决了。
4 年多之前 回复
qq_32763435
qq_32763435 controller还是没有被调用。
4 年多之前 回复

/view/adduser
没有映射到这个位置

qq_32763435
qq_32763435 应该怎么修改呢?
4 年多之前 回复

给你一个建议,对于表单等常用的页面,不要用../这种方式来跳转,因为如果在某些特别长的xx/xx/xx/xx这种URL,如果从它来转发到adduser的话,那么你再次提交,又会报这种错误
最好是以项目为相对路径写URL。

 <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title></title>

  </head>

  <body>

  </body>
</html>

或者${pageContext.request.contextPath}/adduser这种方式是最安全的

qq_32763435
qq_32763435 好的。感谢。因为是刚学框架,很多东西还不懂。所以出现的问题也比较怪异。
4 年多之前 回复

有配置被spring扫描吗?

qq_32763435
qq_32763435 有的。因为login的 controller都是可以调用的。
4 年多之前 回复

我将那个表单放在
调用静态jsp之前,就可以访问到controller。


恭喜登录成功
${user.userName }

${ user.userPassword}

添加
游览

在点击"添加"连接后,用表单提交 就访问不到controller。

请问这是为什么啊。
想让流程正常运行,该怎么修改呢??

已解决:

<form action="../adduser" method="post">

将form表单上  action 加  " ../"

原因:在项目打开后,用登录做的跳转。都是基于  项目路径下的。  也就是 相对路径。

点击前的 目录:http://localhost:9090/ssm_project/

在点击  静态Jsp超链接后。根目录发生了变化。此时的跳转action已经是 绝对路径。

点击超链接后的目录:http://localhost:9090/ssm_project/view/add.jsp
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问