小工具知识网

当前位置: 首页 > 行业知识 > SpringMVC基础

行业知识

SpringMVC基础

2026-11-09 00:17:09 来源:互联网转载

1.SpringMVC概述

三层架构

表���层:负责数据展示

业务层:负责业务处理

数据层:负责数据操作

MVC(Model View Controller),一种用于设计创建Web应用程序表现层的模式

        Model(模型):数据模型,用于封装数据

        View(视图):页面视图,用于展示数据

                jsp

                html

        Controller(控制器):处理用户交互的调度器,用于根据用户需求处理程序逻辑

                Servlet

                SpringMVC

SpringMVC简介

SpringMVC是一种基于Java实现MVC模型的轻量级Web框架

SpringMVC的优点

使用简单

性能突出(相比现有的框架技术)

灵活性强

2.入门案例

入门案例工作流程分析

服务器启动

加载web.xml中DispatcherServlet

读取spring-mvc.xml中的配置,加载所有com包中所有标记为bean的类

读取bean中方法上方标注@RequestMapping的内容

处理请求

DispatcherServlet配置拦截所有请求 /

使用请求路径与所有加载的@RequestMapping的内容进行比对

执行对应的方法

根据方法的返回值在webapp目录中查找对应的页面并展示

实现

    4.0.0    com    SpringMVCrumen    1.0-SNAPSHOT    war                        junit            junit            4.13.2            test                            org.springframework            spring-test            5.1.19.RELEASE                            org.springframework            spring-context            5.1.9.RELEASE                            org.springframework            spring-jdbc            5.3.22                            com.alibaba            druid            1.2.16                            org.mybatis            mybatis            3.5.13                            mysql            mysql-connector-java            8.0.33                            org.mybatis            mybatis-spring            2.0.7                            org.aspectj            aspectjweaver            1.9.4                                    javax.servlet            javax.servlet-api            3.1.0            provided                                    javax.servlet.jsp            jsp-api            2.1            provided                                    org.springframework            spring-web            5.1.9.RELEASE                                    org.springframework            spring-webmvc            5.1.9.RELEASE                        8        8        UTF-8                                                                    org.apache.tomcat.maven                tomcat7-maven-plugin                2.1                                    80                    /                                        
package com.web;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class UserServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        System.out.println("user servlet running...");        req.getRequestDispatcher("success.jsp").forward(req,resp);    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        super.doPost(req, resp);    }}
package com.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class UserController {    @RequestMapping("/save")    public String save(){        System.out.println("user mvc controller is running...");        return "success.jsp";    }}

 web.xml

            DispatcherServlet        org.springframework.web.servlet.DispatcherServlet                    contextConfigLocation            classpath*:spring-mvc.xml                        DispatcherServlet        /    

 success.jsp

第一个spring-mvc页面

3.SpringMVC技术架构

 

六大核心组件 

DispatcherServlet:前端控制器, 是整体流程控制的中心,由其调用其它组件处理用户的请求, 有

效的降低了组件间的耦合性

HandlerMapping:处理器映射器, 负责根据用户请求找到对应具体的Handler处理器

Handler:处理器,业务处理的核心类,通常由开发者编写,描述具体的业务

HandlAdapter:处理器适配器,通过它对处理器进行执行

View Resolver:视图解析器, 将处理结果生成View视图

View:视图,最终产出结果, 常用视图如jsp、html

4.基本配置

1.Controller加载控制

SpringMVC的处理器对应的bean必须按照规范格式开发,未避免加入无效的bean可通过bean加载过滤器进行包含设定或排除设定,表现层bean标注通常设定为@Controller

    

2.静态资源加载

图片并未加载成功

回到代码中发现

当发起一个请求以后

DispatcherServlet配置拦截所有请求/

这使静态资源无法成功加载

解决方法

核心控制器拦截的是所有请求,需要对静态资源请求进行方行,通过配置放行资源实现

 

使用简化格式可以放行所有普通资源调用,无需一一枚举

 

样例

                       

3.中文乱码处理 

SpringMVC提供专用的中文字符过滤器,用于处理乱码问题

配置在web.xml中

    CharacterEncodingFilter    org.springframework.web.filter.CharacterEncodingFilter            encoding        UTF-8        CharacterEncodingFilter    /*

4.注解驱动

目的:去掉spring-mvc.xml与web.xml

使用注解形式转化SpringMVC核心配置文件为配置类

创建com.config.SpringMVCConfiguration

package com.config;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import org.springframework.stereotype.Controller;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration@ComponentScan(value = "com",includeFilters =    @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Controller.class}))public class SpringMVCConfiguration implements WebMvcConfigurer {   /*         */    //代替//    @Override//    public void addResourceHandlers(ResourceHandlerRegistry registry) {//        registry.addResourceHandler("/img/**").addResourceLocations("/img/");//        registry.addResourceHandler("/js/**").addResourceLocations("/js/");//        registry.addResourceHandler("/css/**").addResourceLocations("/css/");//    }//        //代替    @Override    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {        configurer.enable();    }}

基于servlet3.0规范,自定义Servlet容器初始化配置类,加载SpringMVC核心配置类

创建com.config.ServletContainersInitConfig

package com.config;import org.springframework.web.context.WebApplicationContext;import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;import org.springframework.web.filter.CharacterEncodingFilter;import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;import javax.servlet.DispatcherType;import javax.servlet.FilterRegistration;import javax.servlet.ServletContext;import javax.servlet.ServletException;import java.lang.annotation.Annotation;import java.util.EnumSet;public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {   /*         DispatcherServlet        org.springframework.web.servlet.DispatcherServlet                    contextConfigLocation            classpath*:spring-mvc.xml.bak            */    //代替    @Override    protected WebApplicationContext createServletApplicationContext() {        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();        ctx.register(SpringMVCConfiguration.class);        return ctx;    }   /*         DispatcherServlet        /    */    //代替    @Override    protected String[] getServletMappings() {        return new String[]{"/"};    }    @Override    protected WebApplicationContext createRootApplicationContext() {        return null;    }   /*         CharacterEncodingFilter        org.springframework.web.filter.CharacterEncodingFilter                    encoding            UTF-8                        CharacterEncodingFilter        /*    */    @Override    public void onStartup(ServletContext servletContext) throws ServletException {        super.onStartup(servletContext);        CharacterEncodingFilter cef = new CharacterEncodingFilter();        cef.setEncoding("UTF-8");        FilterRegistration.Dynamic registration = servletContext.addFilter("characterEncodingFilter",cef);        registration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST,DispatcherType.FORWARD,DispatcherType.INCLUDE),false,"/*");    }}

此时就可以删除spring-mvc.xml与web.xml

上一篇:联通云服务器怎么创建?

下一篇:苹果下载攻略,轻松掌握返回键下载技巧!