美文网首页Java学习笔记
SpringMVC快速入门

SpringMVC快速入门

作者: 廖马儿 | 来源:发表于2017-12-29 14:20 被阅读9次

1.快速入门

步骤:
1) 建立项目
2) 导入springioc,springweb相关jar包
3) 在/WEB-INF/下创建web.xml文件:
4) 创建控制器

什么是springMVC, 它和spring有什么关系?
SpringMVC属于Spring的后续产品,用在基于MVC的表现层开发,类似于structs2框架。

注意:servlet是一个单例

我们如果在web.xml注册了DispatcherServlet之后, 系统会自动找/WEB-INF/<servlet-name>-servlet.xml,注意目录和名字。

<!-- 注册springmvc核心控制器 -->
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>*.action</url-pattern>
</servlet-mapping>

导包:

图片.png

ModelAndView中,逻辑名称和真实名称

我们在Action中,

public class HelloAction implements Controller {

    /**
     * 处理请求/业务方法
     * @param httpServletRequest
     * @param httpServletResponse
     * @return
     * @throws Exception
     */
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

        /**
         * ModelAndView表示向视图封装的数据和路径
         */
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("message", "this my first springmvc application");
        //modelAndView.setViewName("/jsp/success.jsp");  // 真实路径
        modelAndView.setViewName("success");  // 逻辑名称
        return modelAndView;
    }
}

我们在DispatcherServlet-servlet.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:mvc="http://www.springframework.org/schema/mvc"

        xsi:schemaLocation="

        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

      ">


    <!-- 这个Action -->
    <!-- Action处理类:
            class 代表处理类的全路径
            name  代表请求路径
     -->
    <bean name="/hello.action" class="com.ypd.springmvc2.controller.HelloAction"></bean>

    <!--
        如果Action中熟悉而的是视图逻辑名称,那么视图解析器就必须配置
        如果是真实名称,就可选配置
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 路径前缀 -->
        <property name="prefix" value="/jsp/"></property>
        <!-- 路径后缀 -->
        <property name="suffix" value=".jsp"></property>
        <!-- 前缀+逻辑名+后缀=真实路径 -->
    </bean>

</beans>

就是说如果使用逻辑名称:那么我们需要在DispatcherServlet-servlet.xml中配置视图解析器:

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 路径前缀 -->
        <property name="prefix" value="/jsp/"></property>
        <!-- 路径后缀 -->
        <property name="suffix" value=".jsp"></property>
        <!-- 前缀+逻辑名+后缀=真实路径 -->
    </bean>

JSP取得绝对根路径

${pageContext.request.contextPath} 

JSP取得绝对路径

映射器 Mapping
什么样的请求交给Action
可以将多个action的映射交给一个<bean>标签为id的Action来处理:

图片.png

视图解析器
InternalResourceViewResolver

一个Action中可以写多个类似的业务控制方法:增删改查

适配器 Adapter
SimpleControllerHanderAdapter 简单控制器

ParameterizableViewController: 参数视图控制器


图片.png

AbstractCommandController:抽象的CommandController

原则

1) JavaBean中的属性适合用包装类型即Integer, Double
2) 普通方法中的参数类型适合用于基础类型,即Int, double

SpringMVC 的@InitBinder标签

SpringMVC中,bean定义了Date, double 等类型,如果没有任何处理的话,日期以及double都无法绑定。

解决的方法就是使用Spring MVC的@InitBinder标签。
一般的做法是:BaseController中增加方法initBinder。
并使用注解@InitBinder标注,那么spring mvc在绑定表单之前,都会先注册这些编辑器,当然你如果不嫌麻烦,你也可以单独的写在你的每一个controller中。剩下的控制器都继承该类。
spring自己提供了大量的实现类,诸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等许多,基本上够用。

   @InitBinder    
   protected void initBinder(WebDataBinder binder) {    
       binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));    
       binder.registerCustomEditor(int.class, new CustomNumberEditor(int.class, true));    
       binder.registerCustomEditor(int.class, new IntegerEditor());    
       binder.registerCustomEditor(long.class, new CustomNumberEditor(long.class, true));  
       binder.registerCustomEditor(long.class, new LongEditor());    
       binder.registerCustomEditor(double.class, new DoubleEditor());    
       binder.registerCustomEditor(float.class, new FloatEditor());    
   }   

常用的方法:

// 自定义的转换器
    @InitBinder
    public void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {

        binder.registerCustomEditor(
                Date.class,
                new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)
        );
    }

如果web.xml中配置了url-pattern

图片.png

在注解的时候,可以写也可以不写.action

图片.png

但是在请求的时候一定要写:

图片.png

自定义注解

图片.png

相关文章

  • 01-撩课-SpringMVC快速入门程序

    springMVC概述 Springmvc简单处理流程 快速入门程序 1.创建web工程2.导入springMVC...

  • 快速入门SpringMVC

    体系概述 注解驱动的控制器 处理方法的数据绑定 视图和视图解析器 本地化解析 文件上传 webSocket支持 杂...

  • SpringMVC快速入门

    什么是MVC设计模式? Controller:负责接收并处理请求,响应客户端。 Model:模型数据,业务逻辑。 ...

  • SpringMVC快速入门

    什么是Spring MVC?Spring MVC 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前...

  • SpringMVC快速入门

    一、概述 SpringMVC属于Spring Framework的后续产品,已经融合到Spring Web Flo...

  • SpringMVC快速入门

    1.快速入门 步骤:1) 建立项目2) 导入springioc,springweb相关jar包3) 在/WEB-I...

  • SpringMVC 快速入门

    什么是Spring MVC?Spring MVC 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前...

  • SpringMVC快速入门

    创建Maven工程 使用IDE创建一个Maven Project,选择Archetype时选择maven-arch...

  • 一、SpringMVC快速入门

    第一个Demo index.jsp 前端控制器web.xml springmvc.xml配置文件 控制器Hande...

  • SpringMVC快速入门详解

    简介 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架。具有如下优点: 使用简单,开发便捷(相...

网友评论

    本文标题:SpringMVC快速入门

    本文链接:https://www.haomeiwen.com/subject/ietinttx.html