SpringMVC

(Model View Controller)
Spring的web框架围绕DispatcherServlet设计。 DispatcherServlet的作用是将请求分发到不同的处理器。

MVC请求流程:

(1) 用户发送请求至前端控制器DispatcherServlet

⑵ DispatcherServlet收到请求调用HandlerMapping处理器映射器。

⑶ 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

⑷ DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

⑸ 执行处理器(Controller,也叫后端控制器)。

⑹ Controller执行完成返回ModelAndView

⑺ HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

⑻ DispatcherServlet将ModelAndView传给ViewReslover视图解析器

⑼ ViewReslover解析后返回具体View

⑽ DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

⑾ DispatcherServlet响应用户

配置中央(前端)控制器

web.xml

    <!--配置springMVC前置控制器-->
    <servlet>
        <servlet-name>mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

在WEB-INF中配置
mvc-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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation=" http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <!--自动扫描com.xixingit.controller 包-->
    <context:component-scan base-package="com.hisoft.controller"/>

    <!--开启使用注解-->
    <mvc:annotation-driven/>

    <!--配置视图解析器-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>


</beans>

Controller层

@Controller
public class BookController {

    //无参数
   @RequestMapping("/book/save")
    public String save(){
        System.out.println("save...");
        return "book";
    }

    //有参数
    @GetMapping("/book/save")
//    @PostMapping("/book/save")
    public String save(@RequestParam(required = false,defaultValue = "12",value = "uid") Integer id){
        System.out.println("save1...." + id);
        return "book";
    }
}

字符集过滤器

  <!--Spring 字符集过滤器-->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

接收表单值

form.jsp:

<form action="/book/save" method="post">
    书籍名称:<input type="text" name="bookName"/>
    作者名称:<input type="text" name="author"/>
    <input type="submit" value="提交"/>
</form>

controller层:

@Controller
public class BookController {

    @PostMapping("/book/save")
    public String save(String bookName,String author){
        System.out.println("bookName:" + bookName + "\t" + "author:" + author);
        return "book";
    }

    @PostMapping("/book/save")
    public String save(Book book){
        System.out.println("bookName:" + book.getBookName() + "\t" + "author:" + book.getAuthor());
        return "book";
    }
}

Spring与tomcat插件

pom.xml:

 <dependencies>
        <!--spring beans-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>

        <!--spring core-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>

        <!--spring context-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>

        <!--spring-aop -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.6</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.9.6</version>
            <scope>runtime</scope>
        </dependency>

        <!--javax.inject -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

        <!--spring-web -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>

        <!--spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>

        <!--jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!--servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>




    </dependencies>



    <!--tomcat插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>

                <configuration>
                    <path>/</path> <!--项目访问路径。当前配置的访问是localhost:9090/, 如果配置是/aa,则访问路径为localhost:9090/aa -->
                    <port>8080</port>
                    <uriEncoding>UTF-8</uriEncoding><!-- 非必需项 -->
                    <update>true</update> <!--热部署-->
                </configuration>
            </plugin>
        </plugins>
    </build>

路径直接跟参数

controller.java:
在这里插入图片描述

@GetMapping("/book/update/{id}")
    public String update(@PathVariable(value = "id")Integer uid){
        System.out.println("uid:" + uid);
        return "book";
    }

重定向到方法

RedirectAttributes
控制层:

@GetMapping("/book/del/{id}")
    public String delete(@PathVariable Integer id){
        System.out.println("id:" + id);
        
        return "redirect:/book/list";
    }

    @GetMapping("/book/list")
    public String findAll(){
        List<Book> bookList = null;
        return "list";
    }

返回一个集合传到页面上:
modelmap、model、modelAndView都可;

 @GetMapping("/book/del/{id}")
    public String delete(@PathVariable Integer id){
        System.out.println("id:" + id);
        return "redirect:/book/list";
    }

    
    @GetMapping("/book/list")
    public String findAll(Model model, HttpServletRequest request){
        String age = request.getParameter("age");
        System.out.println("age:" + age);
        List<String> list = new ArrayList<String>();
        list.add("Rose");
        list.add("张三");
        list.add("Alex");
        model.addAttribute("list",list);
        return "list";
    }

闪现技术

redirectAttributes.addFlashAttribute

    @GetMapping("/book/del/{id}")
    public String delete(@PathVariable Integer id, RedirectAttributes redirectAttributes){
        System.out.println("id:" + id);
        redirectAttributes.addFlashAttribute("msg","删除成功!");
        return "redirect:/book/list";
    }

页面返回文本

   @GetMapping("/txt")
    public @ResponseBody String respText(){
        return "Hello";
    }

页面返回json

一、

    @GetMapping(value = "/json",produces = "application/json;charset=utf-8")
    public @ResponseBody String respJson(){
        return "{\"name\":\"Jerry\"}";
    }

二、
依赖jar包:

   <!--jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.3</version>
        </dependency>

java

    @GetMapping(value = "/jackson",produces = "application/json;charset=utf-8")
    public @ResponseBody List<Book> findAllJson(){
        Book book = new Book();
        book.setBookName("红楼梦");
        book.setAuthor("曹雪芹");
        List<Book> books = new ArrayList<Book>();
        books.add(book);
        return books;
    }

页面:
在这里插入图片描述

SpringMVC 引入静态资源的方式

配置mcv-servlet.xml:

    <!--放行静态资源 两种-->
    <mvc:default-servlet-handler/>
    <mvc:resources mapping="/static/**" location="/static/"></mvc:resources>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单眼皮女孩i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值