目录
视图解析器<property> 属性
prefix和suffix 两个属性作为前缀后缀预留标签,可以灵活配置多个页面。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
如controller在添加此标签后,可以统一配置后缀及前缀
如图可见.jsp可以省略了
@Controller
无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,这样Controller 就能被外界访问到了。
在SpringMVC 的配置文件中配置标记为@Controller 的Controller 控制器的位置。
base-package="controller"是要扫描的包的位置
<context:component-scan base-package="controller"></context:component-scan>
在controller中编写@Controller注解
配置文件中要记得声明spring-context
xmlns:context="http://www.springframework.org/schema/context"
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/jsp")
public class HelloController {
//登录
@RequestMapping("/login")
public ModelAndView login() {
ModelAndView mv = new ModelAndView();
mv.addObject("msg","登录");
mv.setViewName("login");
return mv;
}
//注册
@RequestMapping("/reg")
public ModelAndView reg() {
ModelAndView mv = new ModelAndView();
mv.addObject("msg","注册");
mv.setViewName("reg");
return mv;
}
}
在这个代码段中,使用了@Controller标记,这样可以不用实现controller类在url中访问到。
@RequestMapping
使用@RequestMapping注解后,我们不再需要通过配置bean来完成请求的路径配置,直接使用@RequestMapping进行url路径的映射
首先注释掉你配置好的bean,他不再有用了。
然后在代码中添加@RequestMapping注释,这里有两种方法。
@RequestMapping("/xxx")
@RequestMapping(value="/xxx")
以下是代码示例
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/jsp")
public class HelloController {
//登录
@RequestMapping("/login")
public ModelAndView login() {
ModelAndView mv = new ModelAndView();
mv.addObject("msg","登录");
mv.setViewName("login");
return mv;
}
//注册
@RequestMapping("/reg")
public ModelAndView reg() {
ModelAndView mv = new ModelAndView();
mv.addObject("msg","注册");
mv.setViewName("reg");
return mv;
}
}
类头部的@RequestMapping("/jsp")限定前缀开头,此示例中为/jsp
方法头部的@RequestMapping("/reg")排列在类之后,示例中reg方法整体将会显示为/jsp/reg
(@RequestMapping("/jsp")也可以限定post或get方法,@RequestMapping(method = RequestMethod.GET))
容易出现的问题tips:
1.路径存在错误,检查请求的url以及 @RequestMapping位置
2.前端页面放的位置存在问题,或许在WEB-INF/里(手动狗头)
3.有没有mv.setViewName("login");