spring MVC整合框架

版权声明:@2018 https://blog.csdn.net/weixin_40442684/article/details/82084571

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>

猜你喜欢

转载自blog.csdn.net/weixin_40442684/article/details/82084571