SpringMVC体系结构和处理请求控制器

本文介绍了Spring MVC的设计模式和处理过程,强调了其优点如代码重用性和松耦合结构,同时也指出其复杂性。详细阐述了Spring MVC的搭建步骤,从下载jar到配置Servlet,创建Controller和View,最后部署运行。还探讨了Spring MVC的体系结构,包括DispatcherServlet、处理器映射和适配器,以及其与视图解析器的关系。此外,还提及了Spring MVC的特性,如清晰的角色划分和面向接口编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MVC设计模式

        视图(View)-对应组件:JSP或者HTML文件

        控制器(Controller)-对应组件:Servlet

        模型(Model) -对应组件:JavaBean

MVC 处理过程

    

 mvc的优点

        多视图共享一个模型,大大提高代码的可重用性

        MVC三个模块相互独立,松耦合架构

        控制器提高了应用程序的灵活性和可配置性

        有利于软件工程化管理

mvc的缺点

        原理复杂

        增加了系统结构和实现的复杂性

        视图对模型数据的低效率访问

Spring MVC框架搭建步骤

        1、下载jar文件并导入工程

                spring-web-3.2.13.RELEASE.jar

                spring-webmvc-3.2.13.RELEASE.jar

        2、配置文件

                在web.xml中配置Servlet

<?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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <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>*.action</url-pattern>
    </servlet-mapping>

    <!--字符集配置-->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <!-- encoding 是CharacterEncoding的一个属性-->
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
        <init-param>
            <!--forceEncoding 是CharacterEncoding的一个属性-->
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <!--定义过滤内容:-->
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <servlet-name>springmvc</servlet-name>
    </filter-mapping>



</web-app>

                创建Spring MVC的配置文件        

<!--设置扫描器-->
    <context:component-scan base-package="com.springmvc.controller"></context:component-scan>
    <!--配置注解驱动-->
    <mvc:annotation-driven/>
    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <!--后缀-->
        <property name="suffix" value=".jsp"></property>

    </bean>

        3、创建Controller-处理请求的控制器

                

/**
 * Created by IntelliJ IDEA.
 *
 * @Author : zrc
 * @create 2022/8/30 14:54
 * @Controller 表示控制器
 * 通过@RequestMapping来映射url地址
 */
@Controller
public class UserController {
    Logger logger = Logger.getLogger(UserController.class);

    @RequestMapping("/tologin.action")
    public String toLogin() {
        logger.info("进入登陆页面");
        //跳转至登陆页面
        return "login";
    }

    @RequestMapping("/toregist.action")
    public String toRegist() {
        logger.info("进入注册页面");
        //跳转至注册页面
        return "regist";
    }
}

        4、创建View-jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>登陆成功</h1>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>注册</h1>
<form method="post" action="mv5.action">
    姓名<input type="text" name="username" ><br>
    密码<input type="password" name="password"><br>
    性别<input type="radio" name="sex" value="男" checked="checked"> 男<input type="radio" value="女" name="sex">女<br>
    电话<input type="text" name="tel"><br>
    邮箱<input type="email" name="email"><br>
    <input type="submit" >
</form>
</body>
</html>

        5、部署运行

Spring MVC体系结构

        

        DispatcherServlet(前端控制器) 

                Spring MVC最核心的类

                web.xml中配置

        Handler(处理器):对应MVC中C(Controller)

                类型:Object

                作用:实际处理请求

                标注了@RequestMapping的所有方法都可以看作是一个Handler

        ModelAndView

                逻辑视图名

                模型对象

        核心组件

                HandlerMapping(处理器映射)

                        BeanNameUrlHandlerMapping(默认)

                        将请求URL映射到同名的控制器Bean上

                        DefaultAnnotationHandlerMapping

                        将请求映射到标注@RequestMapping注解的控制器和处理方法上

                        RequestMappingHandlerMapping

                HandlerAdapter(适配器)

                        AnnotationMethodHandlerAdapter

                        RequestMappingHandlerAdapter

                ViewResolver(视图解析器)

                        InternalResourceView

Spring MVC框架特点

                清晰地角色划分

                灵活的配置功能

                提供了大量的控制器接口和实现类

                真正做到与View层的实现无关(JSP、Velocity、Xslt等)

                国际化支持

                面向接口编程

                Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值