SpringMVC学习记录

SpringMVC异常处理

步骤实现:

  1. 搭建springmvc环境(依赖、web.xml、springMVC.xml)
  2. 写控制器 (模拟异常,例如 int i=1/0;)
  3. 测试
  4. 不用springMVC的异常处理,传统的异常处理实现!
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 异常处理
 */
@Controller
@RequestMapping("/exception")
public class UserController {

    /**
     * 传统方式异常处理
     *
     * @param model
     * @return
     */
    @RequestMapping("/save")
    public String save(Model model) {
        try {
            System.out.println("执行save方法");

            //模拟异常
            int i = 10 / 0;

            return "index";
        } catch (Exception e) {
            //转到异常提示页面
            model.addAttribute("error",e.getMessage());
            return "error";
        }
    }
}

  1. 改为springMVC提供的异常处理机制实现异常处理
    先定义异常处理类,再配置异常处理类
package com.itheima.controller.exceptions;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 自定义异常处理类
 *  HandlerExceptionResolver: SpringMVC提供异常处理接口
 */
public class MyExceptionHandler implements HandlerExceptionResolver{

    /**
     * resolveException: 只要控制器的方法有任何异常,都会执行该方法
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        
        ModelAndView mv = new ModelAndView();
        //设置错误页面
        mv.setViewName("error");
        //设置错误提示
        mv.addObject("error",e.getMessage());
        
        return mv;
    }
}

配置异常处理类

方式1:
@Component
public class MyExceptionHandler implements HandlerExceptionResolver{
方式2:
<!-- 配置异常处理类 -->
 <bean class="com.itheima.controller.exceptions.MyExceptionHandler"/>

简单整合SSM:

SSM整合步骤:单独spring,1:依赖包,account实体,accountService接口,
AccountSeerviceImpl实现,编写applicationContext.xml,测试
2:单独springMVC环境:配置web.xml,配置DispathcerServler,编写SpringMVC.XML
编写AccountController,编写findAll方法
编写lisp.jsp,显示数据,部署Tomcat,进行测试
3:在service注入    @Autowired
    private AccountDao accountDao;,只需在web.xml配置ServletContext监听器,
用于加载applicationContext.xml

4:单独使用mybatis,查询数据库。
编写AccountDao接口(注解方式)
,编写SqlMapConfig.xml(加载jdbc,数据库连接配置,映射信息)
5,测试( //1.加载SqlMapConfig.xml,/2.创建工厂构造器 //3.创建SqlSession工厂
 //4.获取SqlSession //5.获取Dao代理sqlsession.getMapper(accountDAO.class))

spring整合Mybatis环境:配置applicationContext.xml(加载jdbc,创建数据源,
<!-- 由spring创建SqlSessionFactory对象,来自于mybatis-spring整合包 -->  <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据源 -->
        <property name="dataSource" ref="dataSource"/>
    </bean> <dependencies>
    <!--jdbc连接池-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
    <!--druid-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.6</version>
    </dependency>
    <!--驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.46</version>
    </dependency>

    <!---->
    <!-- jstl包 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    
    <!-- spring扫描Dao接口的映射配置 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- dao接口扫描目录 -->
        <property name="basePackage" value="com.itheima.dao"/>
    </bean>),完成spring整合mybatis。修改service,注入dao。测试。
6:SSM整合,页面实现:.修改AccountController代码。.修改list.jsp。(jstl包,c标签) <c:forEach items="${accounts}" var="account">
    <tr>
        <td>${account.accountId}</td>
        <td>${account.uid}</td>
        <td>${account.money}</td>
    </tr>



spring整合springMVC需加载applicationContext.xml,因为要把service对象放入ioc容器中!加载办法:在web.xml中配置servletContext监听器!

spring整合MyBaties,关键点:把mybatis的sqlsessionFactory的创建,交给spring完成!


所需依赖:

<?xml version="1.0" encoding="UTF-8"?>

<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/xsd/maven-4.0.0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <groupId>com.itheima</groupId>  
  <artifactId>springmvc03_02_ssm</artifactId>  
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <!-- ssm全部依赖-->

  <dependencies>

    <!-- 1.mysql驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.46</version>
    </dependency>

    <!-- 2.druid数据源 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.6</version>
    </dependency>

    <!-- 3.mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>

    <!-- 4.spring与mybatis整合包 *** -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>

    <!-- 5.spring ioc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 6.spring aop -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.7</version>
    </dependency>

    <!-- 7.spring tx -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 8.spring jdbc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 9.spring test -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 10.junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

    <!-- 11.spring webmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 12.log4j日志包 -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.25</version>
    </dependency>

   <!-- 13.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
  </dependencies>
  
</project>

SpringMVC异常处理

步骤实现:

  1. 搭建springmvc环境(依赖、web.xml、springMVC.xml)
  2. 写控制器 (模拟异常,例如 int i=1/0;)
  3. 测试
  4. 不用springMVC的异常处理,传统的异常处理实现!
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 异常处理
 */
@Controller
@RequestMapping("/exception")
public class UserController {

    /**
     * 传统方式异常处理
     *
     * @param model
     * @return
     */
    @RequestMapping("/save")
    public String save(Model model) {
        try {
            System.out.println("执行save方法");

            //模拟异常
            int i = 10 / 0;

            return "index";
        } catch (Exception e) {
            //转到异常提示页面
            model.addAttribute("error",e.getMessage());
            return "error";
        }
    }
}

  1. 改为springMVC提供的异常处理机制实现异常处理
    先定义异常处理类,再配置异常处理类
package com.itheima.controller.exceptions;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 自定义异常处理类
 *  HandlerExceptionResolver: SpringMVC提供异常处理接口
 */
public class MyExceptionHandler implements HandlerExceptionResolver{

    /**
     * resolveException: 只要控制器的方法有任何异常,都会执行该方法
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        
        ModelAndView mv = new ModelAndView();
        //设置错误页面
        mv.setViewName("error");
        //设置错误提示
        mv.addObject("error",e.getMessage());
        
        return mv;
    }
}

配置异常处理类

方式1:
@Component
public class MyExceptionHandler implements HandlerExceptionResolver{
方式2:
<!-- 配置异常处理类 -->
 <bean class="com.itheima.controller.exceptions.MyExceptionHandler"/>

简单整合SSM:

SSM整合步骤:单独spring,1:依赖包,account实体,accountService接口,
AccountSeerviceImpl实现,编写applicationContext.xml,测试
2:单独springMVC环境:配置web.xml,配置DispathcerServler,编写SpringMVC.XML
编写AccountController,编写findAll方法
编写lisp.jsp,显示数据,部署Tomcat,进行测试
3:在service注入    @Autowired
    private AccountDao accountDao;,只需在web.xml配置ServletContext监听器,
用于加载applicationContext.xml

4:单独使用mybatis,查询数据库。
编写AccountDao接口(注解方式)
,编写SqlMapConfig.xml(加载jdbc,数据库连接配置,映射信息)
5,测试( //1.加载SqlMapConfig.xml,/2.创建工厂构造器 //3.创建SqlSession工厂
 //4.获取SqlSession //5.获取Dao代理sqlsession.getMapper(accountDAO.class))

spring整合Mybatis环境:配置applicationContext.xml(加载jdbc,创建数据源,
<!-- 由spring创建SqlSessionFactory对象,来自于mybatis-spring整合包 -->  <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据源 -->
        <property name="dataSource" ref="dataSource"/>
    </bean> <dependencies>
    <!--jdbc连接池-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
    <!--druid-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.6</version>
    </dependency>
    <!--驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.46</version>
    </dependency>

    <!---->
    <!-- jstl包 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    
    <!-- spring扫描Dao接口的映射配置 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- dao接口扫描目录 -->
        <property name="basePackage" value="com.itheima.dao"/>
    </bean>),完成spring整合mybatis。修改service,注入dao。测试。
6:SSM整合,页面实现:.修改AccountController代码。.修改list.jsp。(jstl包,c标签) <c:forEach items="${accounts}" var="account">
    <tr>
        <td>${account.accountId}</td>
        <td>${account.uid}</td>
        <td>${account.money}</td>
    </tr>



spring整合springMVC需加载applicationContext.xml,因为要把service对象放入ioc容器中!加载办法:在web.xml中配置servletContext监听器!

spring整合MyBaties,关键点:把mybatis的sqlsessionFactory的创建,交给spring完成!


所需依赖:

<?xml version="1.0" encoding="UTF-8"?>

<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/xsd/maven-4.0.0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <groupId>com.itheima</groupId>  
  <artifactId>springmvc03_02_ssm</artifactId>  
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <!-- ssm全部依赖-->

  <dependencies>

    <!-- 1.mysql驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.46</version>
    </dependency>

    <!-- 2.druid数据源 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.6</version>
    </dependency>

    <!-- 3.mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>

    <!-- 4.spring与mybatis整合包 *** -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>

    <!-- 5.spring ioc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 6.spring aop -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.7</version>
    </dependency>

    <!-- 7.spring tx -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 8.spring jdbc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 9.spring test -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 10.junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

    <!-- 11.spring webmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <!-- 12.log4j日志包 -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.25</version>
    </dependency>

   <!-- 13.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
  </dependencies>
  
</project>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值