SpringMVC

目录

一、MVC:

二、使用maven搭建web项目

xml方式:

注解方式:

三、学习心得:


一、MVC:

1.经典MVC模式:

        M是指模型,V是视图,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。

2.SpringMVC:

        SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架。它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful编程风格的请求。

3.执行流程:

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

(2)DispatcherServlet收到请求调用HandlerMapping**处理器映射器**。

(3)处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

(4)DispatcherServlet调用HandlerAdapter**处理器适配器**。

(5)HandlerAdapter经过适配调用具体的Handler**处理器**(Controller,也叫后端控制器)。Controller执行完成返回ModelAndView。

(6)HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。

(7)DispatcherServlet将ModelAndView传给ViewReslover**视图解析器**。

(8)ViewReslover解析后返回具体View**视图**。

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

(10)DispatcherServlet响应用户。

二、使用maven搭建web项目

        1.创建普通maven项目

        2.在项目的main文件夹下新建文件夹webapps

        3.  选择File--->Project Structure

4.选择Facets--->+--->web

5.选择项目中的对应模块

6.修改Deployment Descriptors下web.xml路径

7.修改Web Resource Directory路径

xml方式:

(1)导入SpringMVC相关坐标

	<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.8</version>
        </dependency>
    </dependencies>

(2)在webapps下创建hello.jsp视图页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    你好,SpringMVC!
</body>
</html>

(3)在com.cqgcxy.controller包下创建HelloController控制器

package com.cqgcxy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("hello···");
        return "hello.jsp";
    }
}

(4)在resources文件夹下创建SpringMVC核心文件spring-mvc.xml,并添加注解扫描

(5)web.xml中配置SpringMVC核心控制器DispathcerServlet

	<servlet>
        <servlet-name>dispatcherServlet</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>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

(6)配置Tomcat并启动

选择Run--->Edit Configurations

选择+--->Tomcat Server--->Local

选择Artifacts--->Web Application:Exploded--->From Modules

选择项目中的对应模块,选择OK--->继续选择OK

(7)客户端向路径 http://localhost:8080/mvc_demo_war_exploded/hello发起请求测试

注解方式:

(1)添加servlet依赖,并新建com.cqgcxy.config包

		<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>

(2)在config包下创建配置类SpringMvcConfig替换spring-mvc.xml

package com.cqgcxy.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.cqgcxy.controller")
public class SpringMvcConfig {
}

(3)在config包下创建配置类ServletContainersInitConfig替换web.xml

package com.cqgcxy.config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

三、学习心得:

  1. 控制器的设计:合理的控制器设计是非常重要的,要遵循单一职责原则,将请求处理逻辑封装到不同的控制器中,以便于维护和扩展。

  2. 请求参数处理:Spring MVC提供了多种方式来处理请求参数,包括通过URL路径、查询参数、表单提交等方式,需要根据实际情况选择合适的方式,并且注意参数的校验和转换。例如:

      @RequestMapping("/addPurchase")
        public String addPurchase() {
            return "Index/AddPurchase";
        }
    
        @RequestMapping(value = "/addPurchase", method = RequestMethod.GET)
        public ModelAndView SelectAllProviderAndProduct(ModelMap modelMap) {
            List<Provider> providerList = indexService.selectAllProvider();
            List<Product> productList = indexService.SelectAllProduct();
            modelMap.addAttribute("providerList", providerList);
            modelMap.addAttribute("productList", productList);
            return new ModelAndView("Index/AddPurchase", modelMap);
        }

  3. 数据绑定和格式化:Spring MVC支持自动将请求参数绑定到方法的参数上,同时也支持数据格式化,需要注意数据格式的统一性和正确性。  当参数名不匹配时应用@RequestParam注解标识 如:

    @Controller
    @RequestMapping("/user")
    public class UserController {
    
        @RequestMapping("/getUser")
        public String getUser(@RequestParam("id") Long userId, Model model) {
            User user = userService.getUserById(userId);
            model.addAttribute("user", user);
            return "userDetail";
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值