SpringMVC学习巩固(基本使用)(1)

框架概述:
1.SpringMVC专注controller控制层的框架
2.SpringMVC基于Servlet技术进行封装
3.SpringMVC是Spring FrameWorld中的子框,可以完美融合到Spring容器中

主要作用:
a.简化请求参数接收
b.简化前端数据响应

组件作用:
1.DispatcherServlet: 接收前端参数请求和响应前端数据,并完成内部的分发调用.
2.HandlerMapping:查找handle的handle对应路径,进行记录和存储,供DispatcherServlet查找.
3.HandlerAdapter:用于请求参数转换,响应数据转换,调用自定义的类型转化器.
4.Handler:controller类中的方法,自己编写代码的位置,需要将方法注册到HandlerMapping中.
5.视图解析器:快速查找视图页面,内部配置视图页面的前后缀,根据逻辑视图查找,返回json不走视图解析器

基本使用:
1.在pox.xml中添加相关依赖项.
`

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.1</version>
    </dependency>
 <!-- web 项目  servlet -->

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

    <!-- Spring5和Thymeleaf整合包 -->
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring5</artifactId>
        <version>3.0.12.RELEASE</version>
    </dependency>

    <!-- thymeleaf依赖 -->

    <!-- spring webmvc 依赖即可 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.1</version>
    </dependency>

`

编写配置文件:
1.目标:
a.配置DispatcherServlet在web.xml(WEB工程的配置文件)中,设置拦截整个项目的全部路径

b.将SpringMVC自带核心组件放入ioc容器(Spring配置)

c.声明自定义的Handler(方法),将自己的Controller类加入到ioc,并在方法上使用注解.向HandlerMapping中注册.

SpringMVC.xml:

`

<!-- controller -->
<context:component-scan base-package="com.atguigu" />

<!-- 初始化了ceo会自带几个经理和几个秘书 -->
<!--
   编写了一个配置文件 DispatcherServlet.properties把各个方向组件需要的基本组件配置完毕!
   待加载dispatcherServlet的时候,会检查你是否配置,如果没有配置,走默认组件!
-->
<!-- handlerMapping -->
<!-- handlerAdapter -->

<!-- 财务也自带,财务带的jsp模板语言的财务!  -->
<!-- viewResolver-->
<!-- Thymeleaf视图解析器 -->
<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
    <property name="order" value="1"/>
    <property name="characterEncoding" value="UTF-8"/>
    <property name="templateEngine">
        <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
            <property name="templateResolver">
                <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">

                    <!-- 视图前缀 -->
                    <property name="prefix" value="/WEB-INF/templates/"/>

                    <!-- 视图后缀 -->
                    <property name="suffix" value=".html"/>
                    <property name="templateMode" value="HTML5"/>
                    <property name="characterEncoding" value="UTF-8" />
                </bean>
            </property>
        </bean>
    </property>
</bean>

`

WEB.xml(新建html页面放在webapp/WEB-INF里,web无法直接访问,只能走视图解析器,安全):
`

<!-- 配置过滤器解决 POST 请求的字符乱码问题 -->
<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

    <!-- encoding参数指定要使用的字符集名称 -->
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>

    <!-- 请求强制编码 -->
    <init-param>
        <param-name>forceRequestEncoding</param-name>
        <param-value>true</param-value>
    </init-param>

    <!-- 响应强制编码 -->
    <init-param>
        <param-name>forceResponseEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<servlet>
    <servlet-name>ds</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- init-param - servletConfig - init 获取到 :  ds init WebApplicationContext("配置") -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>5</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>ds</servlet-name>
    <!-- /拦截项目的所有路径  /* 会拦截jsp等资源 -->
    <url-pattern>/</url-pattern>
</servlet-mapping>

`

posted @ 2023-07-06 17:59  真的陈师傅  阅读(24)  评论(0)    收藏  举报
返回顶端