04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

简介:  1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构  DispatcherServlet:中央控制器,把请求给转发到具体的控制类


1. Spring-mvc介绍

1.1市面上流行的框架

  • Struts2(比较多)

  • Springmvc(比较多而且属于上升的趋势)

  • Struts1(即将被淘汰)

  • 其他

1.2  spring-mvc结构

  1.  DispatcherServlet:中央控制器,把请求给转发到具体的控制类

  1. Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置)

  2. handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略

  3. ModelAndView:服务层返回的数据和视图层的封装类(无论是配置文件还是注解都不需要配置)

  4. ViewResolver  & View:视图解析器,解析具体的视图

  5. Interceptors :拦截器,负责拦截我们定义的请求然后做处理工作(无论是配置文件方式还是注解都需要先创建再配置)

    红色的是需要自己创建,黑色的需要配置。

1.4spring-mvc流程

 

2.spring-mvc的第一个例子

1. 创建一个web工程

2. 导入依赖包

3.创建springmvc的配置文件

  • 配置中央控制

创建springmvc的核心配置文件

文件的命名规则:中央控制器(servlet的名称)的名称+-servlet.xml

默认位置:WEB-INF

配置:controller和视图解析器

4. 创建controller

3 .三种handlerMapping

1. BeanNameUrlHandlerMapping  (默认)

<!-- 按着controllername来映射寻找controller,默认存在 -->             

   <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

2.SimpleUrlHandlerMapping

<!-- 使用简单url来映射 -->

   <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

      <property name="mappings">

        <props>

           <prop key="/hello1.do">myController</prop>

        </props>

      </property>

   </bean>

3.ControllerClassNameHandlerMapping

<!-- 控制类的类名控制器,访问时类名首字母需要小写 -->

   <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>

4.几种控制器

  1. ParameterizableViewController(参数控制器)

     

<bean name="/toIndex.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">

      <!-- 配置你所要跳转到视图的名称 -->

      <property name="viewName"value="index"></property>

</bean>

  1.  AbstractCommandController(命令控制器)

 

  1.  FormController(表单控制器)
  1. 只支持post请求方式

  2. 表单控制器有简单的验证功能

  3. 如果提交失败返回表单页面,如果提交成功就跳转到成功页面

  4. 有收集表单数据的功能

  5. 日期类型转换

5 springmvc基于注解的开发

5.1注解第一个例子

  1. 创建web项目

  2. springmvc的配置文件中指定注解驱动,配置扫描器

  3. @controller:标识当前类是控制层的一个具体的实现

  4. @requestMapping:放在方法上面用来指定某个方法的路径,当它放在类上的时候相当于命名空间需要组合方法上的requestmapping来访问。

5.2注解方式参数

1.在方法中可以自己随意去定义方法的参数,如果方法的参数的名称与传入参数的name匹配就会自动接收,别且转换我们所定义的数据类型。如果参数列表里定义了自定义的类springmvc会给我们把匹配的参数手机起来并且组装成对象。

2. requestMapping里面的method的类型必须要与前台form的类型一致

3. 重定向:

6. 文件上传

  1. 引入jar

  2. 配置视图解析器

  1. 写上传逻辑

 

/**

    * model层的处理使用map

    * desc

    * author:任亮

    * mail:renliangjava@163.com

    * qq群:2636378537

    * @throws Exception

    */

@RequestMapping(value="/personForUpload.do",method=RequestMethod.POST)

   public String personForUpload(HttpServletRequest request,Person person, Map<String,Object> map) throws Exception{

      //第一步转化request

      MultipartHttpServletRequest mr = (MultipartHttpServletRequest)request;

      //获得上传的文件mr.getFile(String fileName),fileName<input type="file" name="pic"><br>pic

      CommonsMultipartFile cf = (CommonsMultipartFile) mr.getFile("pic");

      byte[] fb = cf.getBytes();

      String fileName = "";

      //设置时间戳格式

      SimpleDateFormat af = new SimpleDateFormat("yyyyMMddhhmmssSSS");

      //获得时间戳的字符串

      fileName = af.format(new Date());

      //加三位随机数

      Random random = new Random();

      for(int i = 0; i < 3; i++){

        fileName = fileName + random.nextInt(10);

      }

      String path =request.getSession().getServletContext().getRealPath("/");

      OutputStream out = new FileOutputStream(path+"/img/"+fileName+".jpg");

      out.write(fb);

      out.flush();

      out.close();

      map.put("person", person);

      return "success";

}

7. 拦截器

 

8. Ssm整合

参见代码

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

   <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

      xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

      id="WebApp_ID" version="2.5">

 

   <!-- springmvc中央的转发器 -->

   <servlet>

      <servlet-name>springmvc</servlet-name>

      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

      <init-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:springmvc-servlet.xml</param-value>

      </init-param>

   </servlet>

   <servlet-mapping>

      <servlet-name>springmvc</servlet-name>

      <url-pattern>*.do</url-pattern>

   </servlet-mapping>

  

   <listener>

      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

   </listener>

   <context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>classpath:beans.xml</param-value>

   </context-param>

</web-app>

 

 

 

<?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"

   xmlns:context="http://www.springframework.org/schema/context"

   xmlns:aop="http://www.springframework.org/schema/aop"

   xmlns:tx="http://www.springframework.org/schema/tx"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

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

                 http://www.springframework.org/schema/mvc

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

                 http://www.springframework.org/schema/context

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

                 http://www.springframework.org/schema/aop

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

                 http://www.springframework.org/schema/tx

                 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

      <!-- 注解扫描器 -->

      <context:component-scan base-package="cn.itcast"/>

  

      <bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <property name="driverClassName"value="com.mysql.jdbc.Driver"></property>

        <property name="url"value="jdbc:mysql://127.0.0.1:3306/springmvc"></property>

        <property name="username"value="root"></property>

        <property name="password"value="root"></property>

      </bean>

     

      <bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

        <property name="dataSource"ref="dataSource"></property>

        <property name="mappingDirectoryLocations">

           <value>classpath:cn/itcast/hbm</value>

        </property>

        <property name="hibernateProperties">

           <props>

              <prop key="hibernate.Dialect">org.hibernate.dialect.MySQL5Dialect</prop>

              <prop key="hibernate.show_sql">true</prop>

              <prop key="hibernate.hbm2ddl">update</prop>

           </props>

        </property>

      </bean>

     

      <bean id="txManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory"ref="sessionFactory"></property>

      </bean>

     

      <tx:advice id="txAdvice"transaction-manager="txManager">

        <tx:attributes>

           <tx:method name="save*"propagation="REQUIRED"/>

           <tx:method name="update*"propagation="REQUIRED"/>

           <tx:method name="get*"propagation="NEVER" read-only="true"/>

        </tx:attributes>

      </tx:advice>

     

      <aop:config>

        <aop:advisor advice-ref="txAdvice"pointcut="execution(* cn.itcast.service..*.*(..))"/>

      </aop:config>

</beans>

 

目录
相关文章
|
6月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
前端开发 Java 测试技术
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
754 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
1412 0
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping(&quot;/user/{id}&quot;)` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable(&quot;自定义名&quot;)` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
829 0
|
9月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
650 0
|
9月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
280 0
|
9月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
369 0
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
690 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
429 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
332 0

热门文章

最新文章

下一篇
开通oss服务