欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring MVC整合框架

程序员文章站 2022-03-11 21:43:37
...

user类

public class User {
    private Integer id;
    private String name;
    private String address;
    private Integer balance;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", address='" + address + '\'' +
                ", balance=" + balance +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Integer getBalance() {
        return balance;
    }

    public void setBalance(Integer balance) {
        this.balance = balance;
    }
}

queryVO

public class QueryVO {
    private User user;
    private Integer id;
    private List<Integer> list = new ArrayList<Integer>();

    @Override
    public String toString() {
        return "QueryVO{" +
                "user=" + user +
                ", id=" + id +
                ", list=" + list +
                '}';
    }

    public List<Integer> getList() {
        return list;
    }

    public void setList(List<Integer> list) {
        this.list = list;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
}

整合框架的结构流程:

需要程序员做的就只有,配置前端控制器(DispatcherServlet)然后书写handler(controller)

springMVC绑定参数

1、获得原生态的Servlet对象

Request

Response

Session

ServletContext

public void servletNative(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException {

想要获得原生态对象,只需要把这个对象放在controller的访问方法中,就能直接获得对应的对象

2、普通类型的参数绑定

String + 8大基本数据类型

public void normalParam(String name,Integer id){
    System.out.println(name);
}

只要把参数的名字写在函数的参数中,就可以直接进行绑定

8大数据类型最好采用他们的封装类,好处是不传也不会报异常,比如如果是用int id那么在访问的时候没有传id的参数,就会报异常,改为Integer就不报

3、pojo类型参数的封装

public void pojoParam(User user){
    System.out.println(user);
}

直接把pojo对象放入参数中,自动将参数封装到实体类中,并且如果还有其他的基本类型,也会将参数放入基本类型中

4、直接对pojo的封装类绑定

public void queryVo(QueryVO queryVO){
    System.out.println(queryVO);
}

要求在传参的时候必须使用ognl表达式的方式传参

比如user.name  user.id  这样才会把参数封装到vo的user属性中

5、数组参数

public void arrayParam(Integer[] ids){
    for (Integer id:ids) {
        System.out.println(id);
    }
}

要求地址为 ids=1&ids=2

6、集合参数

public void listParam(QueryVO qv){
    System.out.println(qv);
}

集合类型参数只能使用封装类

传参的时候List=1&list=2list=3方式传参

请求的限制

1、地址的限制

@RequestMapping(value = "/listParam",”/listget”)

2、请求方法的限制

如果不写method就默认两种都有

@RequestMapping(value = "/listParam",method = RequestMethod.GET)

可以限制get、post

3、请求的方法不仅有post和get

中国人 Post、get
添加、修改 post
删除采用post、get
查找get
外国人 post get  put  delete    ResultFul风格

   增    查   改   删

Controller返回值

4种

1、modelAndView

既可以控制页面的跳转,也可以实现数据的封装

2、void

想使用Servlet原生态的开发方式

Request和response

3、String

才是官方推荐使用的

可以控制页面的跳转

@RequestMapping("/stringDemo")
public String stringDemo(Model model){
    model.addAttribute("name","小明");
    return "/index.jsp";
}

数据的封装需要借助model,在方法中写上参数model,调用model的addAttribute的方法去实现数据封装

页面的跳转方式:默认是转发

              重定向: "redirect:/index.jsp";
              转发:"forward:/index.jsp"

4、json

对比json技术的优劣(fastjson Jackson gson)

导包

<!-- 使用Json所依赖的jar包 -->

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.4</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.4</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.4</version>
</dependency>

在sprigMVC.xml中开启转换的方法

可以省略里面的转换器,加上<mvc:annotation-driven>

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
    </mvc:message-converters>
</mvc:annotation-driven>
在方法中返回值加上@ResponseBody注解
@RequestMapping("/jsonDemo")
public @ResponseBody Object jsonDemo(){
    Map map = new HashMap();
    map.put("code",1);
    map.put("msg","访问成功");
    return map;
}

SSM框架整合

Spring跟mybatis整合

Spring跟springMVC整合

1、导包

Mybatis log4j

 

实际上就是把spring和mybatis放到web里面来

Web.xml要配置 项目启动就读取spring配置文件

 

拦截器

自定义拦截器

相当于原来的过滤器的作用,在访问目标的controller之前,先访问过滤器

自定义一个类去实现HandlerInterceptor接口,去重写它的三个方法

public class MyInterceptor implements HandlerInterceptor{
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("调用前");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
        //方法调用后
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
        //页面渲染后调用
    }
}

再把自定义的拦截器配置到springMVC核心配置文件中

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/sys/*"/>
        <bean class="com.hd.interceptor.MyInterceptor"></bean>
    </mvc:interceptor>
</mvc:interceptors>

springMVC文件上传

SpringMVC提供的防暑

Spring提供的方式(推荐)

导包:文件上传需要两个依赖

   Commons –IO

   Commons-fileUpload

 

书写前端页面

Form表单提交

请求方式:post

Enctype :必须是enctype="multipart/form-data"

异常处理器

写个类实现HandlerExceptionResolver接口

并实现这个接口的方法

public class MyExceptionController implements HandlerExceptionResolver{
    @Nullable
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, @Nullable Object o, Exception e) {
        ModelAndView mav = new ModelAndView();
        mav.addObject("error",e.getMessage());
        mav.setViewName("/error.jsp");
        return mav;
    }
}

需要在springMVC配置文件中配置这个类

<bean class="com.hd.exception.MyExceptionController"></bean>
相关标签: 整合