SpringMVC

MVC介绍

SpringMVC介绍

MVC是⼀种架构模式,俗称模型、视图、控制器 。
经典MVC模式中,M是指业务模型,V是指⽤户界⾯,C则是控制器,使⽤MVC的⽬的是将M和V的实现 代码
离,从⽽使同⼀个程序可以使⽤不同的表现形式。其中,View的定义⽐较清晰,就是⽤户界⾯。

 

引⼊框架操作流程

1、安装依赖
             <!-- SpringMVC框架依赖 -->  
     <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>4.3.20.RELEASE</version>
      </dependency>
        <!-- Spring框架对WEB模块的依赖⽀持 -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>4.3.20.RELEASE</version>
      </dependency>
      <!-- 数据库驱动-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.28</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
      <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-dbcp2</artifactId>
          <version>2.7.0</version>
      </dependency>
           <!-- SpringMVC 把对象转换成json 的依赖 -->
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.13.2</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.13.2</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
          <version>2.13.2</version>
      </dependency>
2、配置web.xml
SpringMVC需要⼯作在web模块下 ,且根据SpringMVC ⼯作流程,需要在web.xml中配置核⼼控制器
DispatherServlet。并且需要指定⾃定义的IOC容器的配置⽂件在什么地⽅ ,如果有缺省配置那么默认情
况下在WEB-INF⽬录下 找以Servlet-name命名的xxxx-servlet.xml 配置⽂件。
<?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>
    <!-- 指定ioc配置⽂件在什么地⽅ classpath:spring.xml 表示在resource⽬录即可-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
3、配置spring.xml
SpringMVC框架需要指定⼀个xml 作为ioc核⼼配置⽂件 ,在这个配置⽂件中,我们⾄少需要配置 Controller在哪个包下 、开启注解映射,跨域等内容,如果⾮前后端分离架构,还需要配置基于jsp或 freemarker等其他后端模板语⾔的视图解析器 。如果在后端项⽬⽬录放置了图⽚或视频、css、js、html 等静态资源,还需要配置开放静态资源映射,否则统统都被dispatherServlet 当作动态请求出现404了 ,对于常量属性的配置我们需要加载外部的⼀个application.properties ⽂件. 如果需要上传⽂件,我们 还需要配置上传组件的配置等
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <!-- 扫描组件-->
    <context:component-scan base-package="com.example.demo2.controller">
    </context:component-scan>
    <context:component-scan base-package="com.example.demo2.service">
    </context:component-scan>
    <context:component-scan base-package="com.example.demo2.dao">
    </context:component-scan>
    <!-- 启动注解映射器-->
    <mvc:annotation-driven />
     <!--跨域-->
    <mvc:cors>
        <mvc:mapping path="/**" allowed-origins="*" allow-credentials=
                "false" allowed-methods="*" allowed-headers="*" max-age="3600" />
    </mvc:cors>

    <!-- 加载属性配置文件 里面有数据库的链接信息-->
    <context:property-placeholder file-encoding="utf-8" location="classpath:application.properties"/>

    <!--配置数据库CRUD工具 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>

    </bean>
    <!-- 数据源-->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property  name="url" value="${url}" />
        <property name="username" value="root" />
        <property name="password" value="123456" />
    </bean>


</beans>
4、编写Controller 示例
#EmployeeController
package com.example.demo2.controller;
import com.example.demo2.common.CommonResult;
import com.example.demo2.pojo.Employee;
import com.example.demo2.service.IEmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;


@RestController
public class EmployeeController {

    @Autowired
    IEmployeeService employeeService;
//    路径查询
    @RequestMapping(value ="/employee/{id}",method = RequestMethod.GET)
    public CommonResult queryById(@PathVariable("id") Long id){
          Employee employee=employeeService.queryById(id);

        return CommonResult.success("查询雇员信息成功",employee);

    }
}
#dao层类
package com.example.demo2.dao.impl;

import com.example.demo2.dao.IEmployeeDao;
import com.example.demo2.pojo.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

@Repository
public class EmployeeDaoImpl implements IEmployeeDao {
@Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public Employee queryById(Long id) {
        String sql="select *from tb_employee where emp_id=?";
        List<Employee> list= jdbcTemplate.query(sql, (ResultSet rs,int i) ->{

                Employee  employee=new Employee(rs.getLong("emp_id"),rs.getString("emp_name"),rs.getString("emp_sex"),rs.getString("emp_salary"),rs.getString("emp_telephone"));
                return employee;

        },id);

                return list.size()>0?list.get(0):null;
        }
    @Override
    public Employee queryByName(String name) {
        return null;
    }
}
#service层类代码
package com.example.demo2.service.impl;

import com.example.demo2.dao.IEmployeeDao;
import com.example.demo2.pojo.Employee;
import com.example.demo2.service.IEmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class EmployeeServiceImpl implements IEmployeeService {
    @Autowired
    IEmployeeDao employeeDao;
    @Override
    public Employee queryById(Long id) {
        return employeeDao.queryById(id);
    }

    @Override
    public Employee queryByName(String name) {
        return employeeDao.queryByName(name);
    }
}
5、启动程序,访问查询接⼝

 

注解详细介绍

@Controller 注解 ⼀个控制器Component 相当于⼀个Bean 配置
@RestController 注解 = @Controller +@ResponseBody注解
@ResponseBody 把返回结果序列化成json字符串 返回给前端
@RequestMaping(value = "/users" ,method = RequestMethod. GET ) 请求映射器
1、GetMapping("/users")
2、PostMapping("/users")
3、PutMapping("/users")
3、DeleteMapping("/users")
@RequestParam("username") 类似于request.getparamter("username") 只能获取前端传递的参数格 式是 username=zhangsan&password=123456&email=songzt@lanqiao.com (⾮json格式数据 ,早期
的form形式 x-www-from-urlencoded) ,requestParam是缺省默认的注解,如果参数列表没有任何 注解,相当于使⽤ RequestParam 形式. @RequestBody 专⻔⽤来接收 Content-Type="application/json" 格式的数据 并且把json转换成
Java对象 @PathVariable ( "id" ) 从路径上获取参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值