前言
上次分享了关联关系。本次来分享一下Spring MVC的入门。
一、什么是springMVC?
Spring Web MVC是一种基于Java的实现了MVC设计模式的、请求驱动类型的、轻量级Web框架。
二、SpringMVC的工作原理
1、DispatcherServlet在web.xml中的部署描述,从而拦截请求到springMVC
2、HandlerMapping的配置,从而将请求映射到处理器
3、HandlerAdapter的配置,从而支持多种类型的处理器
4、处理器(页面控制器)的配置,从而刊行功能处理
5、ViewResolver的配置,从而将逻辑视图名解析为具体的视图技术
三、Spring MVC 搭建环境
1、框架配置文件 springmvc.xml
1.1、扫描base-package
定义base-package
开启注解扫描
开启动态代理
1.2、配置视图解析器
1.3、静态资源映射
2、web.xml配置
Spring与web容器集成
前面分享过了,这里就不分享了。
SpringMVC 与web容器集成
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
修改web.xml
<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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 读取Spring上下文的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring MVC servlet -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--此参数可以不配置,默认值为:/WEB-INF/springmvc-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<!--web.xml 3.0的新特性,是否支持异步-->
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
四、SpringMVC工作原理
1.首先用户发送请求–>DispatherServlet
2 DispatcherServlet–>HandlerMapping
3 DispatcherServlet–>HandlerAdapter
4 HandlerAdapter–>处理器功能处理方法的调用
5 ModelAndView的逻辑视图名–>ViewRecolver
6 View–>渲染
7 返回控制权给DispatcherServlet,由DispatcherServlet返回呼应给用户
hellocontroller
package com.zhw.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author louis
* @create 2022-08-16 21:51
*/
@Controller
public class HelloController {
@RequestMapping("/hello1")
public String hello(){
return "hello";
}
}
hello.jsp
<%--
Created by IntelliJ IDEA.
User: zhw
Date: 2022/8/16
Time: 22:38
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>你好MVC</title>
</head>
<body>
你好MVC
</body>
</html>
五、SpringMVC crud
bookcontroller
package com.zhw.controller;
import com.zhw.biz.BookBiz;
import com.zhw.model.Book;
import com.zhw.util.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author louis
* @create 2022-08-16 21:53
*/
@Controller
@RequestMapping("/book")
public class BookController {
@Autowired
private BookBiz bookBiz;
@RequestMapping("/add")
public String add(Book book){
this.bookBiz.insertSelective(book);
return "redirect:/book/list";
}
@RequestMapping("/del/{bid}")
public String del(@PathVariable(value = "bid") Integer bid){
this.bookBiz.deleteByPrimaryKey(bid);
return "redirect:/book/list";
}
@RequestMapping("/list")
public String list(HttpServletRequest request, Book book){
PageBean pageBean = new PageBean();
pageBean.setRequest(request);
Map map = new HashMap();
map.put("bname","%圣墟%");
List<Map> list = this.bookBiz.listPager(map, pageBean);
request.setAttribute("bookList",list);
request.setAttribute("pageBean",pageBean);
return "bookList";
}
@RequestMapping("/edit")
public String edit(Book book){
this.bookBiz.updateByPrimaryKeySelective(book);
return "redirect:/book/list";
}
}
index.jsp
<%--
Created by IntelliJ IDEA.
User: zhw
Date: 2022/8/17
Time: 9:25
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/book/list">查询所有</a>
<a href="${pageContext.request.contextPath}/book/add">增加</a>
<a href="${pageContext.request.contextPath}/book/edit">修改</a>
<a href="${pageContext.request.contextPath}/book/del/22">删除</a>
</body>
</html>