一、认识SpringMVC
SpringMVC是spring提供的一个mvc框架,其中主要提供了控制器体系。
二、SpringMVC机制
(1)浏览器请求首先到达前端控制器(DispatherServlet,由spring MVC提供,是一个Servlet,相当于一个中央控制器);
(2)前端控制器将请求委托给Controller(业务控制器/局部控制器,由开发者开发);
(3)Controller调用该业务模型,(结果数据封装为model对象),根据业务模型的处理结果,向前端控制器返回视图名称(一个路径、普通字符串即响应内容、JavaBean、集合或者json);
(4)前端控制器调用视图模板(如jsp,json解析器)生成用户界面做出响应。
三、SpringMVC应用中的两种容器
SpringMVC应用中一般有两种容器:
(1)根容器:管理业务层和持久层容器;
(2)前端容器:管理Controller、其他控制层相关对象;
四、SpringMVC的一个例子
1.建一个maven项目(war包),配置pom文件。
2.在pom文件中引入spring-context、spring-webmvc的jar包
3.mybatis.xml和log4j.xml
4.建包和包中的文件(拷贝mybatis实战中的包)。
base、base-mybatis、dao、dto、exception、model、util。
5.建一个config包,里面写配置文件-根配置RootConfig、前端容器配置MvcConfig、总配置MyWebAppInitializer
package ztt.springmvc.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//根配置类
@Configuration
@ComponentScan("ztt.mybatis.service")
public class RootConfig {
}
package ztt.springmvc.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//前端配置类
@Configuration
@ComponentScan("ztt.mybatis.controller")
public class MvcConfig implements WebMvcConfigurer{
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")//允许任意地址接受跨域请求
.allowCredentials(true)//允许跨域使用session认证
.allowedMethods("*");//允许任何请求方式跨域
}
}
package ztt.springmvc.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class MyWebAppInitializer
extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {MvcConfig.class};
}
//映射地址
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
6.配置过滤器类(将mybatis的过滤器包类复制过来)
7.建一个controller包,写个类,类前加@Controller注解,类中方法加两个注解 @RequestMapping("/hello")
@ResponseBody
package ztt.mybatis.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
import ztt.mybatis.base.Result;
@Controller
public class EmployeeController {
@RequestMapping("/hello")
@ResponseBody
public String sayHello() {
return "Hello!";
}
//返回json
@RequestMapping(value="/json",produces = "application/json;charset=utf-8[[[")
@ResponseBody
public String toJson() {
return JSON.toJSONString(Result.success("大家好!"));
}
}
8. 可以运行在服务器上,进行访问。http://localhost:8080/项目名/hello