最近闲得蛋疼,晚上回家了解了解spring mvc

1.关于spring mvc的配置

spring mvc的入口是一个servlet,在项目描述文件web.xml中配置

<servlet>
	<servlet-name>mvcServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>mvcServlet</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>

这里url-pattern配置为"/“会响应所有的请求,此处servlet-name为mvcServlet,那么spring会在初始化的时候在/WEB-INF/下面寻找mvcServlet-servlet.xml配置文件,如果寻找不到则抛出异常。

请求进入到DispatcherServlet之后会根据请求的连接将请求传送到对应的控制器进行处理。

2.配置对应的控制器

通过注解的形式来配置对应的控制器,要想使用注解我们在mvcServlet-servlet.xml中加入

<mvc:annotation-driven/>

@Controller
public class HomeController {
	@RequestMapping({"/", "/home"})
	public String showHomePage(Map<String, Object> model){
		model.put("name", "ynb");
		return "home";
	}
}

spring mvc是基于方法进行设计的,@RequestMapping注解定义了该方法所对应的请求路径,如果请求的路径同该方法注解所定义的路径相同,那么会将request中的请求参数注入到方法对应的参数中,这里跟struts中的action有很大的区别,struts是基于对象进行处理的,每次请求新建一个action实例,并将request中请求参数注入到对象的实例变量中。将需要返回的数据放入到model对象中,以便返回的视图可以进行访问。

3.控制器对于请求返回一个字符串,那么spring mvc是如何通过这个字符串找到对应的返回视图的呢?

在mvcServlet-servlet.xml中配置相应的视图解析器,将返回的逻辑视图名称同对应的视图连接起来,spring mvc提供了很多默认的视图解析器:BeanNameViewResolver,ContentNegotiatingViewResolver,InternalResourceViewResolver....

在mvcServlet-servlet.xml中加入:

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"/>
		<property name="suffix" value=".jsp"/>
</bean> 
经过视图解析器的处理,逻辑视图名称"home"被对应到/WEB-INF/views/home.jsp。

对于ajax请求,在方法体上面加入注解@ResponseBody,然后直接返回响应文本

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐