`

spring-mvc框架搭建

阅读更多
<servlet>
	<servlet-name>springMvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring-mvc.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>springMvc</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

在WEB-INF下添加spring的配置文件spring-mvc.xml 文件内容如下:

<!-- 启动spring自动扫描 -->
<context:component-scan base-package="com.morel.tiger.control"/>
<!-- 支持spring3.0新的mvc注解 -->
<mvc:annotation-driven />

创建UserController如下:

@Controller
@RequestMapping("/user.do")
public class UserController {
	@RequestMapping(params="method=add")
	public String addUser(Model model){
		model.addAttribute("message", "添加了一个用户");
		System.out.println("UserController.addUser()");
		return "/WEB-INF/jsp/addsuc.jsp";
	}
}

其中@RequestMapping("/user.do")的配置是指:该controller的请求url为:user.do

@RequestMapping(params="method=add"):凡是请求的url为:user.do而带了参数method=add的请求会由方法addUser来处理。

return "/WEB-INF/templates/success.vm"; 是告诉spring完成处理之后直接进入该视图。

可以编写多个处理请求的方法,而这些方法的调用都是通过@RequestMapping的属性类控制调用的。

 

RequestMapping的设置

在类的上面注解@RequestMapping("/ex.do")意思为所有的ex.do请求全部进入该类处理。

当然可以编写多个处理请求的方法,而这些方法的调用都是通过@RequestMapping的属性类控制调用的。

 

value:指定请求的实际地址(value可以省略不写)

method:指定请求的method类型,GET、POST、PUT、DELETE等;(也就是说只有制定类型的请求才会进入该方法处理)

consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

params: 指定request中必须包含某些参数值是,才让该方法处理。

headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

 

value属性:

@Controller
@RequestMapping("/user")
public class UserController{
@RequestMapping(value="/some.do")
	public ModelAndView handleRequest(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		System.out.println("handleRequest");
		return new ModelAndView("/WEB-INF/jsp/addsuc.jsp");
	}
}

value:指定请求的实际地址,指定的地址可以是URI Template模式(最终请求的url为:类注解的url+方法注解的url)

value的uri值为以下三类:

A)可以指定为普通的具体值:@RequestMapping(value="/some.do")

该注解的是说:请求的url为”user/some.do”就会进入该方法(handleRequest)处理。

B)可以指定为含有某变量的一类值:@RequestMapping(value="/{userId}/delete.do",method=RequestMethod.GET)

这个注解:url中带了参数的数据userId   url:user/1123/delete.do

C)可以指定为含正则表达式的一类值

如:

@RequestMapping(value="/{userBirth:\\d{4}-\\d{2}-\\d{2}}/update.do")
public String update(@PathVariable String userBirth){
	System.out.println("userBirth:"+userBirth);
	return "/WEB-INF/jsp/addsuc.jsp";
}

请求的url类似:user/1990-11-11/update.do

使用@PathVariable指定形参接收url中的数据

 

当类没有@RequestMapping注解时,则直接参考方法的注解匹配对于的url。如:

@Controller
public class UserController{
    @Controller
    @RequestMapping("/user.do")
    public void managerUser(){}
}

在这里url为user.do则直接使用managerUser处理请求。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics