SpringMVC

一、web.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_3_1.xsd"
         version="3.1">

    <!-- springmvc前端控制器 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- springmvc加载配置文件 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

</web-app>

二、springmvc.xml

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <!-- xml开发 继承Controller抽象类-->

        <!-- 配置handler方式一 -->
        <bean name="URL路径"  class="包名.类名"/>

        <!-- 配置handler方式二 -->
        <bean id="id名" class="包名.类名"/>
        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">
                <props>
                    <prop key="URL路径">id值</prop>
                    <prop key="URL路径">controller1</prop>
                </props>
            </property>
        </bean>


        <!--处理器映射器-->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

        <!--处理器适配器-->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
        <!--另一个处理器适配器-->
        <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>

    <!-- xml开发 -->


    <!-- 静态资源访问 -->
    <mvc:resources location="/static/" mapping="/static/**"/>

    <!-- 注解开发 类上加@Controller,方法上@RequestMapping("URL路径")-->

        <!--注解映射器-->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
        <!--注解适配器-->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>


        <!--配置各种适配器,(各种注解的适配器)包括@RequestParam("") 等   (注解驱动)-->
        <!--conversion-service 配置参数绑定 -->
        <!--validator 配置校验器-->
        <mvc:annotation-driven conversion-service="conversionService" validator="validator"/>

        <!--校验器-->
        <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
            <!--校验器-->
            <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
            <!--指定校验使用资源文件,默认使用classpath下的ValidationMessage.properties-->
            <property name="validationMessageSource" ref="messageSource"/>
        </bean>
        <!--校验信息错误配置文件-->
        <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
            <property name="basenames">
                <list>
                    <!--文件名,不加后缀-->
                    <value>classpath:validationMessage</value>
                </list>
            </property>
            <!--文件编码-->
            <property name="fileEncodings" value="utf-8"/>
            <!--对资源文件的内容缓存时间,单位秒-->
            <property name="cacheSeconds" value="120"/>
        </bean>

        <!-- 自定义参数绑定 -->
        <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
            <property name="converters">
                <list>
                    <!--实现Converter<T1,T2>接口的实现类-->
                    <bean class="包名.类名"/>
                    <bean class="包名.类名"/>
                </list>
            </property>
        </bean>

        <!--异常处理,实现HandlerExceptionResolver接口-->
        <bean class="包名.类名"/>


        <!--过滤器-->
        <mvc:interceptors>
            <!--顺序执行-->
            <mvc:interceptor>
                <mvc:mapping path="/**"/>
                <!--实现HandlerInterceptor接口-->
                <bean class="包名.类名"/>
            </mvc:interceptor>
            <mvc:interceptor>
                <mvc:mapping path="/**"/>
                <bean class="包名.类名"/>
            </mvc:interceptor>
        </mvc:interceptors>

        <!--文件上传-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 设置默认编码 -->
            <property name="defaultEncoding" value="utf-8"/>
            <!-- 上传图片最大大小10M-->
            <property name="maxUploadSize" value="-1"/>
        </bean>

        <!-- 单个handler配置 -->
        <bean class="包名.类名"></bean>
        <!-- 多个handler配置 -->
        <context:component-scan base-package="包名"></context:component-scan>

    <!-- 注解开发 -->


    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <!--后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>


</beans>

三、Controller

@Controller
@RequestMapping("/xxx")
public class UsersController {
    //method,只允许这种请求
    @RequestMapping(value = "/xxx",method = {RequestMethod.POST,RequestMethod.GET})
    public ModelAndView xxx() throws Exception {

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("key",value);
        modelAndView.setViewName("index");

        return modelAndView;
    }

    @RequestMapping(value = "/xxx")
    //@Validated validation验证,value为分组,后紧跟BindingResult参数,在pojo中验证
    public String xxx(Model model, @ModelAttribute("key") @Validated(value = {接口名.class}) Users users, BindingResult bindingResult) throws Exception {



        if (bindingResult.hasErrors()) {
            List<ObjectError> allError = bindingResult.getAllErrors();
            for (ObjectError objectError : allError) {
                System.out.println(objectError.getDefaultMessage());
            }
        }

        return "jsp名"
        return "include:xxx.action";
        return "forward:xxx.action";
        return "redirect:xxx.action";
    }

    //参数回显
    @ModelAttribute("key")
    public T xxx() {
        return value;
    }

    @RequestMapping(value = "/xxx")
    //数组:数组参数名.属性
    //List:list名[下标].属性
    //Map: map名['key']
    public String a(HttpServletRequest request, Model model,  @RequestParam("image") MultipartFile file) throws Exception {


        // 如果文件不为空,写入上传路径
        if(!file.isEmpty()) {
            // 上传文件路径
            String path = request.getServletContext().getRealPath("/static/images/");
            // 上传文件名
            String filename = file.getOriginalFilename();
            File filepath = new File(path,filename);
            // 判断路径是否存在,如果不存在就创建一个
            if (!filepath.getParentFile().exists()) {
                filepath.getParentFile().mkdirs();
            }
            // 将上传文件保存到一个目标文件当中
            file.transferTo(new File(path + File.separator + filename));
            return "success";
        } else {
            return "error1";
        }

    }

    // pojo<==>json
    @RequestMapping(value = "/xxx")
    public @ResponseBody T xxx(@RequestBody Users users) throws Exception {
        return null;
    }
}

四、异常处理

//自定义异常类
public class CustomException extends Exception {
    private String message;

    public CustomException(String message) {
        super(message);
        this.message = message;
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
//异常处理
public class CustomExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        CustomException customException = null;
        if (e instanceof CustomException) {
            customException = (CustomException) e;
        } else {
            customException = new CustomException("未知错误");
        }
        String message = customException.getMessage();
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("message",message);
        modelAndView.setViewName("error");

        return modelAndView;
    }
}

五、jar包

  • commons-logging-1.2.jar
  • jstl-1.2.jar
  • servlet-api.jar
  • spring-aop-4.3.3.RELEASE.jar
  • spring-aspects-4.3.3.RELEASE.jar
  • spring-beans-4.3.3.RELEASE.jar
  • spring-context-4.3.3.RELEASE.jar
  • spring-context-support-4.3.3.RELEASE.jar
  • spring-core-4.3.3.RELEASE.jar
  • spring-expression-4.3.3.RELEASE.jar
  • spring-jdbc-4.3.3.RELEASE.jar
  • spring-orm-4.3.3.RELEASE.jar
  • spring-test-4.3.3.RELEASE.jar
  • spring-tx-4.3.3.RELEASE.jar
  • spring-web-4.3.3.RELEASE.jar
  • spring-webmvc-4.3.3.RELEASE.jar
  • hibernate-validator-4.3.0.Final.jar
  • jboss-logging-3.3.0.Final.jar
  • validation-api-1.0.0.GA.jar
  • jackson-core-asl-1.9.11.jar
  • jackson-mapper-asl-1.9.11.jar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值