Spring MVC
MVC将一个应用分成三个基本邠:Model(模型),View(试图),Controller(控制器)。
MVC有如下特点:
1. 多个视图可以对应一个模型。这样减少了代码的复制以及代码的维护量,易于维护。
2. 模型返回的数据与现实逻辑分离。例如我们经常使用JSP页面。
3. 应用被分为三层,这降低了各层之间的耦合,提供了应用的可扩展性。
4. 控制层的概念也很有效,它把不同的试图组合在一起,完成不同的请求。因此,控制层可以说也包含了用户请求权限的概念
5. MVC更加符合软件工程化管理的精神。不同的层各司其职,大大提高了效率。
Spring MVC的优势
1. 有强大的灵活性、非侵入性和可配置性。(这里的侵入性是指耦合强度,侵入性越高则耦合越强,所以,非侵入性就是耦合性低)
2. 可以自动绑定用户输入,并正确地转换数据类型。例如:能自动解析字符创,并将其设置为模型的int或float类型的属性。
3. SpringMVC使用一个名称/值的Map对象实现更加邻国的模型数据传输。
4. 支持多试图技术,最常见的就是JSP技术。
5. 有一个强大的标签库。
SpringMVC的DispatcherServlet
DispacherServlet是一前端控制器,用户所有的请求驱动围绕这个DispatcherServlet来分派请求。DispatcherSerlet是一个Servlet(它继承自HttpServlet基类),因此使用时需要把它噢诶之在Web应用的博士描述符web.xml,配置信息如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<!--配置springMVC的dispatcherServlet-->
<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/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 让Spring MVC的前端控制器拦截所有请求 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
配置一个DispacherServlet,该servlet在Web程序启动是会自动立即加载,加载时会需要一个SpringMVC的配置文件,默认情况下,应用汇去应用横须文件夹的WEB-INF下查找赌赢的[servlet-name]-servlet.xml文件。例如本实例就是的<servlet-name>就是springmvc,默认查找的就是/WEB-INF/springmvc-servlet.xml。
解析该配置文件会根据文件信息创建一个ApplicationContext容器对象,就是我们一般看见的上下文环境。有了WebApplicationContext容器,开发者就可以很自认地使用Spring的IOC,AOP等其他功能了。
第一个Spring项目
springmvc.xml配置文件,在在WEB-INF下,和web.xml同目录,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.3.xsd">
<!-- 配置Handle,映射"/hello"请求 -->
<bean name="/hello" class="org.fkit.comtorller.HelloControllor"/>
<!-- 处理映射器将bean的name作为url进行查找,需要在配置Handle是指定name(即url) -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- SimpleControllerHandlerAdapter是一个处理适配器,所有处理适配器都要事先HandlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.SimpleConterllerHandlerAdapter"/>
<!-- 试图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalReaourceViewResolver"/>
</beans>
Controller类的实现,代码如下:
package org.fkit.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloController implements Controller{
private static final Log logger = LogFactory.getLog(HelloController.class);
/**
* handleRequest是Controller接口必须实现的方法
* 该方法的参数是对应请求的HttpServletRequest和HTTPServletResponse
* 该方法必须返回一个包含视图名或视图名和模型的ModelndView对象
*/
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
logger.info("handleRequest 被调用");
//创建准备返回的ModelAndView对象,该对象通常包含了返回视图名,模型的名称以及迷行对象
ModelAndView mv = new ModelAndView();
//添加模型数组,可以是任意的POJO对象
mv.addObject("message","Hello World");
//设置逻辑视图名,驶入解析器会根据该名字解析到具体的试图界面
mv.setViewName("/WEB-INT/content/welcome.jsp");
//返回ModelAndView对象
return mv;
}
}
最后自己再写一哥jsp页面就可以进行部署了.
希望各位继续关注,暑假期间写的主要内容是SSM框架,LInux系统操作基础和算法编程题.