zoukankan      html  css  js  c++  java
  • Spring-mvc介绍

    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.3 mvc模式

    model

     

    view

     

    controller

     

              Request                        response

    1.4spring-mvc流程

    2.spring-mvc的第一个例子

    1. 创建一个web工程

    2. 导入依赖包

    3.创建springmvc的配置文件

    • 配置中央控制器

    创建springmvc的核心配置文件

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

    默认位置:WEB-INF下

    配置:controller和视图解析器

    4. 创建controller

    3 .三种handlerMapping

    1. BeanNameUrlHandlerMapping  (默认)

    <!-- 按着controller的name来映射寻找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 springmvc基于注解的开发

    4.1注解第一个例子

    1. 创建web项目
    2. 在springmvc的配置文件中指定注解驱动,配置扫描器

     

    1. @controller:标识当前类是控制层的一个具体的实现
    2. @requestMapping:放在方法上面用来指定某个方法的路径,当它放在类上的时候相当于命名空间需要组合方法上的requestmapping来访问。

    4.2注解方式参数

    接收参数:

    1. HttpServletRequest可以直接定义在参数的列表,可以使用
    2. 在参数列表上直接定义要接收的参数名称,只要参数名称能匹配的上就能接收所传过来的数据, 可以自动转换成参数列表里面的类型,注意的是值与类型之间是可以转换的
    3. 数据写到页面,方法的返回值采用ModelAndView, new ModelAndView("index", map);,相当于把结果数据放到request里面
    4. 在参数列表中直接定义Model,model.addAttribute("p", person);把参数值放到request类里面去,建议使用
    5. Ajax调用springmvc的方法:直接在参数的列表上定义PrintWriter,out.write(result);把结果写到页面,建议使用的
    6. 请求方式的指定:@RequestMapping( method=RequestMethod.POST )可以指定请求方式,前台页面就必须要以它制定好的方式来访问,否则出现405错误
    7. 重定向:controller内部重定向,redirect:加上同一个controller中的requestMapping的值,controller之间的重定向:必须要指定好controller的命名空间再指定requestMapping的值,redirect:后必须要加/,是从根目录开始
      1. 引入jar包

    5文件上传

     

    1. 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";

    }

    6拦截器

     

  • 相关阅读:
    MYsql 之单标查询.
    MYSQL社区版安装手册
    爬虫框架学习
    celery_消息队列
    rabbitMQ消息队列
    Django分页设置
    Mysql-基础+安装指南
    super函数的用法
    hashlib 和loggin模块
    Python的魔法方法
  • 原文地址:https://www.cnblogs.com/Jeson2016/p/6472494.html
Copyright © 2011-2022 走看看