初識 spring-mvc
阿新 • • 發佈:2018-11-03
spring-mvc 介紹
- Spring-mvc 屬於表現層的框架,他是Spring 框架的一部分,作用就是controller(控制層)
- spring mvc 的執過程:
- 客服端傳送請求 dispacherServlet
- 把相應的結果請求給 HandlerMapping (HanlerAdapter 進行處理(處理( 比如到那個介面,資料返回給那個介面,對資料喲啊做哪些處理(modleAndView(裡面包括了要處理的資料、檢視))
- 把這個 modleAndView 給你的 dispacherServlet 給你的檢視渲染器 --> 最後還會到 dispacherServlet 最後使用者才會看到一個好的網頁)))
- 裡面有幾個核心的物件:
- 第一個是:dispacherServlet
- 第二個是:HandlerAadapter
- 第三個是:你的檢視渲染器
- springmvc 的框架的專案
- 1.匯入相關的 jar spring-webmvc-3.2.13.RELEASE.jar
- 2.核心 xml檔案 springmvc.xml 配置,請求的地址
- 3.配置 它統一的字首(目錄的檔案),字尾(.jsp.html)
- 核心配置檔案在那裡載入 web.xml (核心配置檔案要配置到 web.xml)
- 在這裡面配置 servlet spring-webmvc-3.2.13.RELEASE.jar
開始配置servlet 配置在 web.xml
<!--開始配置servlet servlet-name 取一個名字-->
<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-servlet.xml</param-value>
</init-param>
<!-- 立刻載入-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
springmvc-srevlet 非註解 與 註解
<!--當你的請求地址 是 index.html 的時候 就會到 UserController 類 -->
<bean name="/index.html" class="com.offcn.controller.UserController"></bean>
<!-- 掃描 controller 下所有的包-->
<context:component-scan base-package="com.offcn.controller" />
<!--開啟註解驅動-->
<mvc:annotation-driven />
<!-- 完成檢視的對應-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--開始配置字首 prefix 字首-->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!--開始配置字尾 suffix 字尾-->
<property name="suffix" value=".jsp"></property>
</bean>
非註解
public class UserController implements Controller{
/*這個方法,當你的客戶端傳送請求的 url 地址,跟這個類對應上了就會走這個方法
* (HandlerMapping)
* */
@Override
public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
//就是你要跳轉到介面
return new ModelAndView("doIndex");
}
}
Contoller層的各種實現方式
@Controller
/*@RequestMapping("/userController")*/
public class UserController {
//8080/UserController/index
/*把頁面的資料 放到你的Controller*/
/*如果我現在要傳遞一個引數 userName=123456*/
/*@RequestMapping 代表你請求的地址*/
*@RequestMapping("index")
//value 代表你網頁拼接的鍵,request 這個代表是否必須拼接這個引數,false代表可以拼接,也可以不拼接
public String index(@RequestParam(value = "userName",required = false) String userName){
System.out.println(userName);
//返回的介面
return "doIndex";
}
/*-------------------------------------------------------------*/
//必須傳引數, method 設定你的請求方式
//報 405 的錯誤是因為你的請求方式跟你的接受方式不統一
/*value = "/index/*.do" 只要你的index 下面的 , 以 .do結尾的都能 匹配到 */
@RequestMapping(value = "/index/*.do",params = {"userName"},method = RequestMethod.GET)
/*----------------------------------------------------------------*/
// PathVariable 這個註解就是匹配你 uri 上的任何引數,註解上的pid 跟你的pid
@RequestMapping(value = "/index/{pid}/{userName}")
public String index(@PathVariable String pid,@PathVariable String userName){
System.out.println(pid+"\t"+userName);
return "doIndex";
}
/*---------------------------------------------------------------*/
//把 controller 的資料傳到 jsp頁面中
@RequestMapping("/toDoIndex")
public ModelAndView toDoIndex( String userName){
//獲得userName
//構建 modelAndView 物件
ModelAndView modelAndView = new ModelAndView();
//把值方到modelAndView(以鍵值對的形式來傳遞的)
modelAndView.addObject("userName",userName);
//把你跳轉的介面放到 modelAndView 裡
modelAndView.setViewName("doIndex");
return modelAndView;
}
/*------------------------和最終版 一樣 常用---------------------------*/
//返回就是我們要跳轉的地址 view model, 這裡的model 不用例項化出來, 直接傳進去
@RequestMapping("/toDoIndex1")
public String toDoIndex1(String userName, Model model){
// model 裡面來新增資料// 同樣也是以鍵值對來傳遞引數的
model.addAttribute("userName",userName);
return "doIndex";
}
/*------------------------------------------------*/
/*通過 map 把資料傳過去*/
@RequestMapping("/toDoIndex2")
public String toDoIndex2(String userName, Map<String,Object> map){
map.put("userName",userName);
return "doIndex";
}
/*---------------------------最終版-----------------------------*/
@RequestMapping("/toUpdata")
public String toUpdata(@RequestParam(value = "userName",required = false) String userName,
@RequestParam(value = "userPwd",required = true) String userPwd){
return "doIndex";
}
/*---------------------------------------------------------------*/
//@RequestParam("userName") 這個屬於鍵 userName 屬於值
public String index(@RequestParam("userName") String userName){
System.out.println(userName);
//返回的介面
return "doIndex";
}
}