一.SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。
二.SpringMVC的基本原理
1. 户向服务 发送请求. 如: localhost:8080/user
2. DispatcherServlet接收到请求, 开始处
3. 在DispatcherServlet内部, 通过HandlerMapping检查这个url有没有对应的controller处 法 4. 如果有, 直接调 这个 法
5. 如果返回字符 , viewResolver会把字符 和配置 件中的前后缀组成 的资源 径
6. DispatcherServlet会把这个资源转为html, 发给 户的浏览
三.SpringMVC中常 的注解
标记在类上 的:
@Controller : 标注该类是controller层的类, 相当于在spring中配置 关于该类的bean
标记在 法上 的:
@RequestMapping: 标记该 法对应的请求URI, 及这次请求的请求 法(GET/POST) @ResponseBody: 将该 法的返回值转为json发回给前端, 再进 jsp 径的拼接
标记在 法参数的:
@PathVariable: 获取URI地址映射的参数 @ReqeustParam: 获取URL后附带的参数 表
四.配置SpringMVC (本人用的maven创建的)
**pom.xml文件 所需要的依赖**
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--1.spring-core
2.spring-webmvc
3.spring-jdbc
4.spring-aspects
5.jstl-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--jackson databind-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
</dependency>
<!--jackson core-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.8</version>
</dependency>
<!--jackson-annotations-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.8</version>
</dependency>
</dependencies>
**Springmvc-servlet.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" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--配置SpringMVC-->
<!--mvc的注解驱动-->
<mvc:annotation-driven/>
<!--注解的包扫描-->
<!--将这个配置包下面的所有类,都相当于配置好了bean,调用的时候使用注解-->
<!--每个类的默认id是 首字母小写的形式: 例如:Student 类的id就是student-->
<context:component-scan base-package="com.xxx"/>
<!--默认的资源文件的处理方式-->
<!--类似 js,css,img的那个资源文件,本身不需要 SpringMVC 做处理-->
<mvc:default-servlet-handler/>
<!--视图解析器-->
<!--根据代码的逻辑处理,配置正确的jsp/HTML等文件 的路径-->
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<!--前缀-->
<property name="prefix" value="/WEB-INF/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
**web.xml文件配置**
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>MVCServlet</servlet-name>
<servlet-class >org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMVC-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MVCServlet</servlet-name>
<!--*.action-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
五.controller层
//接收传过来的参数
@Controller
public class MainController {
//localhost:8080/aa
@RequestMapping(value = "/aa")
public String frontPage(){
return "index";
}
//带参数的请求
//1.直接在地址上拼接参数(URI 模板映射)
//2.localhost/user/zhangsan/
@RequestMapping(value = "/user/{username}/{age}")
public String varPage(@PathVariable("username")String name,
@PathVariable("age") String age){
System.out.println(name);
System.out.println(age);
//jsp文件的名字
return "userinfo";
}
//localhost:8080/stu?name=张三&age22
//2.获取参数列表
/*
>1. 一个一个的获取,格式:@RequestParam("key) 参数类型 参数名
>2. 全部获取 ,格式就是@RequestParam Map<key,value> 参数名
>3. 靠bean 获取,场景:参数列表的key名 和bean的属性名必须一致
*/
// @RequestMapping(value = "/stu")
// public String stuinfo(@RequestParam("name") String name,
// @RequestParam("age") Integer age){
// System.out.println(name);
// System.out.println(age);
//
//
// return "stuinfo";
// }
@RequestMapping(value = "/stu")
// public String stuinfo(@RequestParam Map<String,String> params){
public String stuinfo(Student student){
System.out.println(student);
return "stuinfo";
}
/*
SpringMVC项目的健里的步骤(maven)
1.使用maven 建立工程 ,添加POM文件中的依赖关系
2.在resources 文件夹下面创建xxx-servlet.xml
3.配置web.xml
4.创建jsp文件和controller
SpringMVC 的基本原理
1.用户向服务器发送请求, 比如:localhost:8080/user
2.DispatcherServlet 接收到请求,开始处理
3.DispatcherServlet 内部,通过有个HanderMapping 的检查
这个url 有没有对应的controller的处理方法
4.如果有,直接调用这个方法
5.如果返回字符串 ,viewResolver 会把字符串和配置文件的前后缀组成页面的资源路径
6.DispatcherServlet 会把这个资源转换为html 发送个客户的浏览器
*/
六.后台向前端返回数据
@Controller
public class SecController {
//从后台向前段发送数据
@RequestMapping(value = "teacher")
public String teacherPage(ModelMap map){
//1. Map<String ,object> map
//2. Model model
//3. ModelMap modelmap
//4. ModelAndView
//存到了request域中
map.addAttribute("teacher","大表姐");
return "teacher";
}
//向前台发送 json数据
@RequestMapping(value = "/json")
@ResponseBody
//作用就是 会把当前的方法的返回值,转为json 格式 发送个前端 他不走那个jsp拼接
public Student jsonTest(){
Student student=new Student();
student.setName("张三");
student.setAge(20);
return student;
}
//练习:下面两个就是在url上写上参数,传到后台(拼接一下)在返回来
@RequestMapping(value = "/json1")
public String json(@RequestParam Map<String, String> map,
ModelMap map1){
String name = map.get("name");
String age=map.get("age");
String sex=map.get("sex");
map1.addAttribute("map",name+age+sex);
return "json1";
//在json1.jsp中调用map
}
//发送的json数据
@RequestMapping(value = "/json2")
@ResponseBody
public Student student(Student student){
Student student1=new Student();
student1.setName(student.getName());
student1.setAge(student.getAge());
System.out.println(student1);
return student1;
}
}