• 精创网络
  • 精创网络
  • 首页
  • 产品优势
  • 产品价格
  • 产品功能
  • 新闻中心
  • 关于我们
  • 在线客服
  • 登录
  • DDoS防御和CC防御
  • 精创网络云防护,专注于大流量DDoS防御和CC防御。可防止SQL注入,以及XSS等网站安全漏洞的利用。
  • 免费试用
  • 新闻中心
  • 关于我们
  • 资讯动态
  • 帮助文档
  • 白名单保护
  • 常见问题
  • 政策协议
  • 帮助文档
  • 如何优雅地使用SpringMVC框架
  • 来源:www.jcwlyf.com浏览:17更新:2025-11-26
  • SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,它通过一套MVC注解,让POJO成为处理请求的控制器,而无须实现任何接口。使用SpringMVC可以更高效地构建Web应用,下面将详细介绍如何优雅地使用SpringMVC框架。

    1. 项目搭建

    首先,我们需要搭建一个SpringMVC项目。可以使用Maven或Gradle来管理项目依赖。以Maven为例,在pom.xml文件中添加以下依赖:

    <dependencies>
        <!-- Spring MVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.18</version>
        </dependency>
        <!-- Servlet API -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    接着,配置web.xml文件,将SpringMVC的前端控制器DispatcherServlet配置进去:

    <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>springDispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>springDispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>

    这里指定了SpringMVC的配置文件为spring-mvc.xml,接下来我们需要创建这个配置文件。

    2. SpringMVC配置文件

    在classpath下创建spring-mvc.xml文件,进行SpringMVC的相关配置:

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans.xsd
                               http://www.springframework.org/schema/mvc
                               http://www.springframework.org/schema/mvc/spring-mvc.xsd
                               http://www.springframework.org/schema/context
                               http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!-- 开启注解扫描 -->
        <context:component-scan base-package="com.example.controller"/>
    
        <!-- 开启MVC注解驱动 -->
        <mvc:annotation-driven/>
    
        <!-- 视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    </beans>

    这里开启了注解扫描,指定了扫描的包为com.example.controller,开启了MVC注解驱动,并且配置了视图解析器,将视图的前缀和后缀进行了设置。

    3. 创建控制器

    在com.example.controller包下创建一个控制器类,使用@Controller注解将其标记为控制器:

    package com.example.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    
    @Controller
    public class HelloController {
    
        @GetMapping("/hello")
        public String hello(Model model) {
            model.addAttribute("message", "Hello, SpringMVC!");
            return "hello";
        }
    }

    这里使用@GetMapping注解处理GET请求,当访问/hello路径时,会执行hello方法,将消息添加到模型中,并返回视图名称hello。根据视图解析器的配置,会找到/WEB-INF/views/hello.jsp文件。

    4. 创建视图

    在/WEB-INF/views目录下创建hello.jsp文件:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Hello SpringMVC</title>
    </head>
    <body>
        <h1>${message}</h1>
    </body>
    </html>

    在这个JSP文件中,使用EL表达式获取模型中的消息并显示出来。

    5. 处理请求参数

    SpringMVC可以方便地处理请求参数。例如,我们可以使用@RequestParam注解来获取请求参数:

    package com.example.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    @Controller
    public class ParamController {
    
        @GetMapping("/param")
        public String getParam(@RequestParam("name") String name, Model model) {
            model.addAttribute("name", name);
            return "param";
        }
    }

    当访问/param?name=John时,会将name参数的值John添加到模型中,并返回视图名称param。

    6. 处理表单提交

    对于表单提交,我们可以使用@PostMapping注解处理POST请求,并使用@ModelAttribute注解将表单数据绑定到实体类上:

    package com.example.controller;
    
    import com.example.entity.User;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.ModelAttribute;
    
    @Controller
    public class FormController {
    
        @GetMapping("/form")
        public String showForm() {
            return "form";
        }
    
        @PostMapping("/form")
        public String submitForm(@ModelAttribute("user") User user, Model model) {
            model.addAttribute("user", user);
            return "result";
        }
    }

    这里有一个GET请求处理方法showForm用于显示表单页面,一个POST请求处理方法submitForm用于处理表单提交,将表单数据绑定到User对象上,并将其添加到模型中。

    7. 异常处理

    在SpringMVC中,我们可以使用@ControllerAdvice和@ExceptionHandler注解来进行全局异常处理:

    package com.example.exception;
    
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.servlet.ModelAndView;
    
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        @ExceptionHandler(Exception.class)
        public ModelAndView handleException(Exception e) {
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.addObject("errorMessage", e.getMessage());
            modelAndView.setViewName("error");
            return modelAndView;
        }
    }

    这里定义了一个全局异常处理类,当发生异常时,会将异常信息添加到模型中,并返回error视图。

    8. 文件上传

    SpringMVC可以方便地处理文件上传。首先,需要在配置文件中添加文件上传解析器:

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10485760"/>
    </bean>

    然后在控制器中处理文件上传:

    package com.example.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.IOException;
    
    @Controller
    public class FileUploadController {
    
        @PostMapping("/upload")
        public String uploadFile(@RequestParam("file") MultipartFile file) {
            if (!file.isEmpty()) {
                try {
                    byte[] bytes = file.getBytes();
                    File newFile = new File("uploads/" + file.getOriginalFilename());
                    file.transferTo(newFile);
                    return "uploadSuccess";
                } catch (IOException e) {
                    e.printStackTrace();
                    return "uploadFailure";
                }
            }
            return "uploadFailure";
        }
    }

    这里使用@RequestParam注解获取上传的文件,将文件保存到指定的目录中。

    通过以上步骤,我们可以优雅地使用SpringMVC框架来构建Web应用,从项目搭建、配置文件的编写、控制器的创建、请求参数的处理、表单提交、异常处理到文件上传等方面都进行了详细的介绍。在实际开发中,还可以根据具体需求进行更多的扩展和优化。

  • 关于我们
  • 关于我们
  • 服务条款
  • 隐私政策
  • 新闻中心
  • 资讯动态
  • 帮助文档
  • 网站地图
  • 服务指南
  • 购买流程
  • 白名单保护
  • 联系我们
  • QQ咨询:189292897
  • 电话咨询:16725561188
  • 服务时间:7*24小时
  • 电子邮箱:admin@jcwlyf.com
  • 微信咨询
  • Copyright © 2025 All Rights Reserved
  • 精创网络版权所有
  • 皖ICP备2022000252号
  • 皖公网安备34072202000275号