就不再赘述理论,下面都是代码示例。
Web.xml配置
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
1、……/string.do || ……/string.htm
/**
* @return
*/
@RequestMapping("/string")
public ModelAndView Index(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
return modelAndView;
}
2、……/map.do || ……/map.htm
传递参数
@RequestMapping("/map")
public ModelAndView Index2(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("/collection/map");
Map<String, List<Person>> datas = new HashMap<String, List<Person>>();
List<Person> persons = new ArrayList<Person>();
person.setName("yvan");
person.setSex("male");
persons.add(person);
datas.put("data", persons);
modelAndView.addObject("data", datas);
return modelAndView;
}
视图接收
<c:forEach items="${data}" var="item">
<div>
<p style="color: red"><c:out value="${item.key}"></c:out></p>
<div>
<c:forEach items="${item.value}" var="person">
<p style="color: purple"><c:out value="${person.name}"></c:out></p>
<p style="color: purple"><c:out value="${person.sex}"></c:out></p>
</c:forEach>
</div>
</div>
</c:forEach>
3、通过ResponseBody 返回json格式的数据
method请求的方法,下面的示例表示只允许post请求
@RequestMapping(value="/json",method=RequestMethod.POST)
public @ResponseBody Person Index4(){
return person;
}
4、多路由映射
请求 ……../mapArr.do 和……../mappingArr.do都会请求此action
@RequestMapping(value={"/mapArr","/mappingArr"})
public ModelAndView mapIngArray(){
return new ModelAndView("/muti/muti");
}
5、请求路径参数
当访问…./123456.htm || …./123456/info.htm || …./user/123456/info.htm
的时候123456会作为参数传入以@PathVariable注解的变量中。
@RequestMapping(value={"/{userId}","/{userId}/info","/user/{userId}/info"})
public ModelAndView handlerByParamValue(@PathVariable int userId){
System.out.println(userId);
return new ModelAndView("/muti/muti");
}
6、通配符
可以匹配 …./user1.do和…./usera.do 但是不能匹配…./user11.do和…./useraa.do
@RequestMapping(value="/user?")
public ModelAndView handlerByExp(){
return new ModelAndView("/muti/muti");
}
7、通过参数名来匹配
可以匹配…/core.do?create
@RequestMapping(value="/core",params="create")
public ModelAndView handlerByParams(){
return new ModelAndView("/muti/muti");
}
8、请求传参
/**
* action映射:.../requestParam?userid=123456
* @RequestParam
* value="userid":url绑定的变量值
* required=true:是否必须
* defaultValue:默认值
* @param
* @return
*/
@RequestMapping("/requestParam")
public ModelAndView requestParam(@RequestParam(value="userid",required=true,defaultValue="")String userid)
{
System.out.println(userid);
return new ModelAndView("/muti/muti");
}
9、传递数组参数
/**
* action映射:.../paramArrs?role=admin&role=super
* @return
*/
@RequestMapping("/paramArrs")
public String GetUserMenu(@RequestParam(value="role") List<String> roles)
{
if (roles!=null&&roles.size()>0) {
for (String string : roles) {
System.out.println(string);
}
}
return "/muti/muti";
}
10、提交model
/**
* action映射:.../setUser.do
* @param user
*/
@RequestMapping(value="/setUser",method=RequestMethod.POST)
public String createUser(@ModelAttribute(value="user")User user)
{
System.out.println(user.getUsername());
System.out.println(user.getSex());
return "/muti/muti";
}
视图部分
<form action="${pageContext.request.contextPath}/setUser.htm" method="post">
<input type="text" name="username" />
<input type="radio" name="sex" value="男"/>
<input type="radio" name="sex" value="女"/>
<input type="submit" value="提交" />
</form>