一.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;
}
}