Spring MVC入門
Spring MVC簡介
1. Spring MVC 這個架構應用于web開發的web層,接受請求和響應請求。
2. 它是Spring架構的一部分。
3.
Spring MVC架構架構
Spring MVC快速搭建
1、導包
Spring所有包+spring-web spring -springMVC
2、書寫核心配置檔案
SpringMVC.xml or spring-mvc.xml or spring-servlet.xml。
名字無關緊要,位置建議放在src目錄下。
内容:建議開啟注解模式,使用注解模式來配置controller
<?xml version="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!--開啟注解模式-->
<context:component-scanbase-package="cn.hd.controller"></context:component-scan>
</beans>
3、配置web.xml檔案
<?xml version="1.0"encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMVC.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
public ModelAndView hello(){
System.out.println("hellospringmvc.");
ModelAndView mav = newModelAndView();
mav.setViewName("/index.jsp");
return mav;
}
}
Spring MVC的通路流程
1. 請求進入到web.xml;web.xml配置了spring MVC的前端控制器。進入到前端控制器。(spring架構的核心)
2. HandlerMapping(處理器映射器)
使用者查詢所有的Controller(Handler),傳回一個Handler對象
3. 老闆拿到了handler,指派這個處理器擴充卡(HandlerAdapter)去執行Handler
4. Handler傳回一個ModelAndView視圖導航給處理器,傳回給老闆。
5. 老闆拿到了ModelAndView指派ViewResolver(視圖解析器)(.jsp)解析成html,傳回給老闆,老闆将html傳回給請求。
Spring由什麼構成?
核心控制器
3大元件
Handler(controller) view(.jsp)
參數綁定
1、 原始的request、reponse、session
@RequestMapping("/oldParam")
public void oldParam(HttpServletRequestrequest, HttpServletResponse response, HttpSession session) throws IOException{
String id = request.getParameter("id");
System.out.println(id);
response.getWriter().write(id);
}
2、 簡單資料的綁定(8大基礎類型及其包裝類,String)
@RequestMapping(value = "baseParam")
public void baseParam(int id){
System.out.println(id);
}
int 型則必須傳遞參數,否則報異常,Integer不傳也不報錯,值為null
3、 pojo類的綁定
@RequestMapping(value = "pojoParam")
public void pojoParam(Useruser){
System.out.println(user);
}
4、 pojo封裝類的綁定
@RequestMapping(value = "queryVoParam")
public void queryVoParam(QueryVoqueryVo){
System.out.println(queryVo.getUser());
}
需要請求位址必須按照ognl的傳遞方式傳遞參數
User.id=123
數組參數
@RequestMapping(value = "arrParam")
public void arrParam(Integer []ids){
for (Integer id:ids) {
System.out.println(id);
}
}
List參數
@RequestMapping(value = "listParam")
public void listParam(QueryVovo){
System.out.println(vo.getList());
}
傳參:list[0].name=zhangsan
通路請求的限制
resultMapping
1、 路徑限制,可以在類上面添加位址,這個類下面所有的方法的通路全部要加上這個字首。
2、 可以采用多個位址通路同一個方法
3、 通路方式的限制,可以限制post請求,或者get請求。
@RequestMapping(value = {"access.action","access2.action"},method= RequestMethod.GET)
public void access(){
System.out.println("進入了Access");
}
Controller的傳回值
ModelAndView
能進行頁面的跳轉,也能進行資料封裝。
@RequestMapping(value = "modelAndView")
public ModelAndViewmodelAndView(){
ModelAndView mav = new ModelAndView();
User user = new User();
user.setName("張三");
mav.addObject("user",user);
mav.setViewName("/index.jsp");
return mav;
}
Void
進行json字元串的互動
String
官方文檔所推薦
1、可以直接進行頁面的跳轉
@RequestMapping(value = "strData")
public String strData(Modelmodel){
User user = new User();
user.setName("lsi");
model.addAttribute("user",user);
return "/index.jsp";
}
2、還可以進行轉發到其他的頁面
@RequestMapping(value = "strData")
public String strData(Modelmodel){
User user = new User();
user.setName("lsi");
model.addAttribute("user",user);
return "forward:/index.jsp";
}
3、以及重定向到其他的頁面
@RequestMapping(value = "strData")
public String strData(Modelmodel){
User user = new User();
user.setName("lsi");
model.addAttribute("user",user);
return "redirect:/index.jsp";
}
也可以進行資料的互動,互動的方式是需要一個Model
然後調用model的addAttribute方法。
JSON資料互動
1、 導包
2、 直接在代碼中加上注解@ResponseBody,用傳回值的方式,直接傳回
3、 報轉換異常在springMVC.xml中配置
<!--配置資料轉換器-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>