1.@RequestMapping注解
在Spring MVC中使用@RequestMapping将请求与处理方法一一对应,@RequestMapping负责将不同请求映射到对用的控制器方法中
@Controller
@RequestMapping("/user")
public class UserController{
@RequestMapping("/showUser")
public String showUser(){
return "ShowUser";
}
}
注意:类上的@RequestMapping对应类里面所有请求的路径,例如:/user/showUser
也就是类注解url+方法注解url
为了方便维护程序,建议采用类级别注解,将相关处理放在同一控制器中
在@RequstMapping指定的URL中可以含有变量参数,也可以设置多个映射URl地址
同时使用@PathVariable指定形参接受url中的参数值
@Controller
@RequestMapping(value="abc")
public class HelloController{
@RequestMapping(value={"/hello","/hello/{username}"})
public String hello(@PathVariable("username")) String username){
System.out.println(username);
return "hello";
}
}
@RequestMapping可以通过method属性来限制请求的类型,如GET、POST
method使用枚举类RequestMethod来定义请求类型
如果URL请求方式和Action中method属性值不相符,则拒绝该请求
@Controller
@RequestMapping(value="abc")
public class HelloController{
@RequestMapping(value={"/hello","/hello/{username}"},method=Requestmethod.GET)
public String hello(@PathVariable("username")) String username){
System.out.println(username);
return "hello";
}
}
也可以使用组合注解来限制方法接受请求的类型
2.前后端数据交互
2.1视图向控制器传参
(1)使用HttpServletRequest接受请求参数
用request.getParameter("参数")来获取请求参数
(2)使用简单数据类型接受请求参数
直接在方法中写参数,但是要保证方法形参名要和用户请求参数名保持一致
注意:如要不一致,则使用@RequestParam指定,例如:@RequestMapping("name") String username
(3)使用实体类对象接受请求参数
在entity包下创建一个newParam类,放用户请求对应参数
controller方法中参数放newParam param即可
2.2控制器向视图传参
(1)通过HttpServletRequest传递数据
使用request.setAttribute("param",param)传递,视图用EL表达式${}接受数据
(2)使用Model或者Map或者ModelMap传递数据
@RequestMapping("/login")
public String login(Model model){
String name = "我" ;
model.addAttribute("name",name);
return "login";
}
(3)使用ModelAndView传递数据(推荐)
@RequestMapping("/login")
public ModelAndView login(){
ModelAndView mv = new ModelAndView();
mv.setViewName("login");
String name = "我"
mv.addObject("name",name);
return ModelAndView;
}
3.Spring MVC处理静态资源
3.1采用<mvc:default-servlet-handler />
在springmvc-servlet.xml中配置
<mvc:default-servlet-handler />
3.2配置default的servlet来处理
在web.xml中配置
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
3.3采用<mvc:resources />配置
在springmvc-servlet.xml中配置
<mvc:resources location="/,classpath:/META-INF/publicResources/" mapping="/resources/**" />