SpringMvc看这个

5 篇文章 0 订阅
1 篇文章 0 订阅


一、SpringMVC入门案例

1.在POM.XML下导入坐标

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>SpringMvcSSM</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  
  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.9.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.2.9.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.6</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.16</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.8</version>
    </dependency>
  </dependencies>
  
  <build>
    <plugins>
     <plugin>
       <groupId>org.apache.tomcat.maven</groupId>
       <artifactId>tomcat7-maven-plugin</artifactId>
       <version>2.2</version>
       <configuration>
         <path>/</path>
       </configuration>
     </plugin>
    </plugins>
  </build>
</project>

2.创建包和类

在这里插入图片描述

3.在config包下创建配置类

1.JdbcConfig

package com.itheima.config;
import com.alibaba.druid.pool.DruidAbstractDataSource;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
public class JdbcConfig {

    @Value("${jdbc.Driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource(){
       DruidDataSource dataSource= new DruidDataSource();
       dataSource.setDriverClassName(driver);
       dataSource.setUrl(url);
       dataSource.setUsername(username);
       dataSource.setPassword(password);
       return dataSource;
    }

	 //2.事务管理的Bean
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource){
        DataSourceTransactionManager ds = new DataSourceTransactionManager();
        ds.setDataSource(dataSource);
        return ds;
    }
}

2.MyBatisConfig

package com.itheima.config;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;

public class MyBatisConfig {
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean factoryBean= new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.itheima.domain");
        return factoryBean;
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer= new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("com.itheima.dao");
        return mapperScannerConfigurer;
    }
}

3.ServletConfig

package com.itheima.config;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    //加载spring配置的
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }
    //加载springMvc配置
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }
    //    设置请求归属SpringMvc处理
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

4.SpringConfig

package com.itheima.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@ComponentScan({"com.itheima.service"})
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MyBatisConfig.class})

//1.事务驱动
@EnableTransactionManagement
public class SpringConfig {
}


5.SpringMvcConfig

package com.itheima.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

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

4.在resource创建jdbc.properties,并建立数据库

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm_db
jdbc.username=root
jdbc.password=root

5.SpringMvc工作流程

在这里插入图片描述

二、REST风格

1.pom.xml导入JSON坐标

<!--        json坐标-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>
    </dependencies>

2.开启json参数传递,当然@EnableWebMvc功能很多

在这里插入图片描述

三.rest案例

package com.itheima.controller;
import com.itheima.domain.Book;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/*
* REST风格入门案例
* */
@RequestMapping("/books")
@RestController
public class BookController {

    @PostMapping
    public String save(Book book){
        return "save implement";
    }

    //1.路径上要有参数占位{id}
    //2.添加@PathVariable
    @DeleteMapping("{id}")
    public String delete(@PathVariable Integer id){
        System.out.println("Book delete  success!!!"+id);
        return "delete implement";
    }

    @PutMapping
    public String update(Book book){
        System.out.println("Book update  success!!!"+book);
        return "update implement";
    }

    @GetMapping("/{id}")
    public String selectById(@PathVariable Integer id){
        System.out.println("Book select  success!!!"+id);
        return "select implement";
    }

    @GetMapping
    public List<Book> selectAll(){

        List<Book> bookList= new ArrayList<>();

        Book book1 = new Book();
        book1.setBookName("Spring入门");
        book1.setAuthor("权总");
        book1.setPrice(Integer.parseInt("23"));
        bookList.add(book1);

        Book book2 = new Book();
        book1.setBookName("Mybatis入门");
        book1.setAuthor("轩总");
        book1.setPrice(Integer.parseInt("45"));
        bookList.add(book2);

        return bookList;
    }
}


四. 表现层与前端的传续协议

1.在Controller包下创建Code和Result类(定义返回类型)

例如Code

package com.itheima.controller;

public class Code {

    public static final Integer SAVE_OK =20011;
    public static final Integer DELETE_OK =20021;
    public static final Integer UPDATE_OK =20031;
    public static final Integer GET_OK =20041;

    public static final Integer SAVE_EER =20010;
    public static final Integer DELETE_EER =20020;
    public static final Integer UPDATE_EER=20030;
    public static final Integer GET_EER =20040;
}

l例如Result

package com.itheima.controller;

public class Result {

    private Object data;
    private Integer code;


    public Result() {
    }

    public Result(Integer code,Object data ) {
        this.data = data;
        this.code = code;
    }

    public Result(Integer code,Object data,  String msg) {
        this.data = data;
        this.code = code;
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    private String msg;
}

2.修改对应表现层方法

package com.itheima.controller;

import com.itheima.domain.Book;
import com.itheima.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/books")
public class BookController {

    @Autowired
    private BookService bookService;

    @PostMapping
    public Result save(@RequestBody Book book) {
        boolean flag = bookService.save(book);
        return new Result(flag?Code.SAVE_OK:Code.SAVE_EER,flag);
    }

    @PutMapping
    public Result update(@RequestBody Book book) {
        boolean flag = bookService.update(book);
        return new Result(flag?Code.UPDATE_OK:Code.UPDATE_EER,flag);
    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
        boolean flag = bookService.delete(id);
        return new Result(flag?Code.DELETE_OK:Code.DELETE_EER,flag);
    }

    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        Book book = bookService.getById(id);
        Integer code= book!=null?Code.GET_OK:Code.GET_EER;
        String msg=book!=null?"":"数据查询失败!";
        return new Result(code,book,msg);
    }

    @GetMapping
    public Result getAll() {
        List<Book> bookList = bookService.getAll();
        Integer code= bookList!=null?Code.GET_OK:Code.GET_EER;
        String msg=bookList!=null?"":"数据查询失败!";
        return new Result(code,bookList,msg);
    }
}

五.异常处理器

在这里插入图片描述

一般将异常分好类,包装捕获声明
在这里插入图片描述

六.前台与后台联调

1.在Config包下新建SpringMvcSurpport类

重写一下addResourceHandlers方法,放行前端界面

package com.itheima.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {

    //重写一下addResourceHandlers方法,放行前端界面
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/page/**").addResourceLocations("/page/");
        registry.addResourceHandler("/css/**").addResourceLocations("/css/");
        registry.addResourceHandler("/js/**").addResourceLocations("/js/");
        registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
    }
}

2.在SpringMvcConfig下添加扫描

扫描多个包时,注意要加{ }大括号

在这里插入图片描述

3.修改前端代码,进行联调

七.拦截器

1.创建InterCeptor包和类,并实现HInterCeptor接口,重写三个方法

在这里插入图片描述

2.在config包SpringMvcSupport类上自动装配interCeptor对象,重写addInterCeptors方法,并在SpringMvcConfig中添加扫描

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要创建一个 Spring MVC 工程,可以按照以下步骤进行操作: 1. 确保你已经安装了 Java 开发环境(JDK)和一个 Java IDE(如Eclipse、IntelliJ IDEA等)。 2. 打开你的 IDE,创建一个新的 Maven 项目。选择 Maven 项目是因为 Maven 是一个流行的构建工具,可以管理项目依赖和构建过程。 3. 在 Maven 项目创建向导中,选择创建一个 Web 应用程序(Web Application)。 4. 在创建过程中,填写项目的基本信息,如 Group Id、Artifact Id 和版本号等。 5. 完成项目创建后,IDE 会生成一个基本的项目结构,包括 src/main/java、src/main/resources 和 src/main/webapp 等目录。 6. 在 src/main/java 目录下创建一个 Java 类作为项目的启动类。这个类需要添加 `@Configuration` 和 `@EnableWebMvc` 注解,以启用 Spring MVC 的功能。 7. 在 src/main/webapp/WEB-INF 目录下创建一个名为 `web.xml` 的配置文件。这个文件是传统的 Servlet 配置文件,在其中配置 Spring MVC 的 DispatcherServlet。 8. 在 src/main/resources 目录下创建一个名为 `springmvc-servlet.xml` 的 Spring MVC 配置文件。在这个文件中配置视图解析器、控制器、拦截器等 Spring MVC 相关的组件。 9. 在 src/main/webapp/WEB-INF/views 目录下创建一个名为 `index.jsp` 的 JSP 文件作为默认的视图。 10. 运行项目,可以使用内置的 Tomcat 等容器来启动应用程序。访问 `http://localhost:8080/` 可以看到默认的页面。 这只是一个简单的创建 Spring MVC 工程的过程,具体的细节和配置可能会根据项目需求有所不同。建议你参考官方文档或者一些教程来学习更详细的内容。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值