• Spring MVC技术


    1.Spring MVC/Struts2 框架的异同,举例说明Spring MVC框架和Sturts2框架应用的场景?

    共同点
    它们都是表现层框架,都是基于 MVC 模型编写的。
    它们的底层都离不开原始 ServletAPI。
    它们处理请求的机制都是一个核心控制器。
     
    区别
    Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter
    Spring MVC 是基于方法设计的,而 Struts2 是基于类,Struts2 每次执行都会创建一个动作类。所
    以 Spring MVC 会稍微比 Struts2 快些。
    Spring MVC 使用更加简洁,同时还支持 JSR303, 处理 ajax 的请求更方便
    (JSR303 是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注
    解加在我们 JavaBean 的属性上面,就可以在需要校验的时候进行校验了。)
    Struts2 的 OGNL 表达式使页面的开发效率相比 Spring MVC 更高些,但执行效率并没有比 JSTL 提
    升,尤其是 struts2 的表单标签,远没有 html 执行效率高。

    ------------------------------------------------------------------


    2.SpringMvc和Struts1,Struts2的比较的优势

    ------------------------------------------------------------------


    3.描述Spring MVC的工作流程

    ------------------------------------------------------------------


    4.画图展示Spring MVC的工作流程,描述从客户端发出请求到服务器响应给客户
    端的整个过程。

    ------------------------------------------------------------------


    5.如何配置Spring MVC的核心控制器?

    <context:annotation-config></context:annotation-config>
            <context:component-scan base-package="renjiale"></context:component-scan>
            
            <mvc:annotation-driven></mvc:annotation-driven>
            <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <!-- rest风格 http://域名/index.jsp -->
                <property name="prefix" value="/"></property>
                <property name="suffix" value=".jsp"></property>    
            </bean>
            <bean class="org.springframework.web.servlet.DispatcherServlet"></bean>

    ------------------------------------------------------------------

    6.Spring MVC的核心控制器的作用是?

    ------------------------------------------------------------------


    7.默认情况下Spring MVC的核心控制器从哪里获取配置文件?

    ------------------------------------------------------------------


    8.如何指定自定义的配置文件?

     

    ------------------------------------------------------------------


    10.什么是Spring MVC映射器?有哪几种?

    ------------------------------------------------------------------


    11.什么是Spring MVC适配器?有什么作用?

    ------------------------------------------------------------------


    12.Spring MVC有没有默认的映射器?在哪里定义的?

    ------------------------------------------------------------------


    13.Spring MVC的Handler有几种实现方式?

    ------------------------------------------------------------------


    14.Spring MVC的控制器中获取数据的方式有哪些?

      

      (1). @RequestParam(value="msg")String mymsg:
         表示定义一个名叫mymsg的变量,用来接收页面传递的名叫msg的参数;
         此时,要求msg参数必须传递,如果没有传递,就会出现:
         HTTP Status 400 - Required String parameter 'msg' is not present
         要想解决,可以给requestParam注解加上一个属性:
         @RequestParam(value="msg",required=false)String mymsg
         还可以利用该注解,给参数设定默认值:
         @RequestParam(value="msg",required=false,defaultValue="helloworld")String mymsg

      (2).直接在方法中定义变量来接收参数
         此时要求变量名必须与参数的名字一致
         springmvc在接收参数的时候,是可以对参数做必要的类型转换的;

      

      (3). 通过HttpServletRequest对象来接收参数
         从控制器中,传递参数到页面:
         1.通过request来保存并传递参数;

    ------------------------------------------------------------------


    15.@RequestParam的作用是?

      接收来自页面上传递的参数

    public String show2(@RequestParam(value="msg")String myMsg,@RequestParam(value="str")String mystr) {
            System.out.println("从页面上接收到的信息:"+"msg:"+myMsg+",mystr:"+mystr);
            return "suc";
        }

    ------------------------------------------------------------------


    16.Spring MVC将数据携带到前台的方式有哪些? 

      

      如果需要把控制器中的参数传递到页面,常见的,也有两种方式:

      (1)通过model对象来传递。

        此时,model中有两个方法可以使用:model.addAttribute(object)和model.addAttribute("名字",object)。这两个方法都可以使用。

      (2)通过request,session来传递

    ------------------------------------------------------------------

    17.Spring MVC如何将数据从控制中携带到前台页面?

     传递后,在页面上通过EL表达式来获取,show页面代码如下:

    <h2>这里是show.jsp页面</h2>
    通过model传递到页面的参数key:${key }<br/><!--这里的结果是:hello world,abc-->
    获取model单个参数存储的变量:${string }<br/><!--这里的结果是:xxxxxxx-->

    ------------------------------------------------------------------


    19.如何使用Handler进行请求转发,代码如何实现Handler进行重定向?

    ------------------------------------------------------------------


    20.Handler方法中编程实现如何绑定自定义日期类型参数业务

    ------------------------------------------------------------------


    21.如何解决Spring MVC的乱码问题?

      在编码过程中,因为参数的传递过程,编码环境的不一致,经常会导致乱码的出现,springMVC提供了一个过滤器,可以用来处理乱码问题,只需要我们在web.xml中直接配置即可:

      (1)过滤器

    <filter>
      <filter-name>encodingfilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
      </init-param>
      <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
      </init-param>
    </filter>
    
    <filter-mapping>
      <filter-name>encodingfilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

       (2)get请求方式  

        a.new String

         String realname = users.getRealname();
            try {
                realname = new String(realname.getBytes("IOS-8859-1"),"utf-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

        b.tomcat- connector-port

    ------------------------------------------------------------------


    22.在Spring MVC中406错误有可能引起的问题是?

    ------------------------------------------------------------------


    23.Spring MVC与AJAX交互的注解有那几个?

     

    ------------------------------------------------------------------


    25.Spring MVC实现文件上传有哪些步骤?

    ------------------------------------------------------------------


    26.Spring MVC上传文件解析器是什么?

    ------------------------------------------------------------------


    27.Spring MVC上传文件解析器的id名称是否可以更改?为什么?

    ------------------------------------------------------------------


    28.Spring MVC上传文件解析器的常见参数?

     

    ------------------------------------------------------------------


    30.Spring MVC拦截器有什么作用?

    ------------------------------------------------------------------


    31.Spring MVC的拦截器有几种配置方式?

    ------------------------------------------------------------------


    32.Spring MVC的拦截器与Sturts2拦截器 有什么区别。

    ------------------------------------------------------------------


    33.Spring MVC拦截器的实现方式有哪些?

    ------------------------------------------------------------------


    34.拦截器实现中有哪些方法?

    ------------------------------------------------------------------


    35.拦截器实现中3个方法分别处理哪些内容?

    ------------------------------------------------------------------


    36.Spring MVC怎样自定义拦截器?

     

    ------------------------------------------------------------------


    38.Spring MVC中的拦截器与Struts2 的拦截器有什么不同?

     

    ------------------------------------------------------------------


    40.Spring 、Spring MVC怎样集成?SSM环境搭建? 

      ssm : spring4.3 + springMVC4.3 + mybatis3.2.3
      ssh :spring + struts2 + hibernate

      ssm环境搭建:
      1. spring环境:
        a.添加spring常用依赖;
        b.准备spring配置文件:
          先生成spring配置文件,并添加可能用到的schame;
          这里为spring应用注解做准备,添加组件扫描范围;
        c.web.xml文件中,配置spring监听器和上下文参数:
          监听器监听服务器启动,当服务器启动的时候,马上初始化spring容器,为将来处理用户请求做准备;
          上下文参数,用来指定spring配置文件的路径和名字

      2.springMVC环境:
        a.添加springmvc依赖;
        b.springmvc配置文件:
          生成springmvc的配置文件,这里直接利用spring配置文件就可以了;
          配置mvc注解驱动;
          配置视图处理器;
        c.web.xml文件中,配置DispatcherServlet
          此时因为MVC配置文件放到了resources目录下,所以需要在servlet中,配置一个初始化参数,用来指明mvc配置文件的路径和名字

      3.mybatis环境;
        a.添加mybatis依赖:
          mybatis核心依赖;
          数据库驱动依赖;
          这里使用的是oracle,但是通常中央仓库中无法下载oracle依赖,所以这里自己安装了一个oracle依赖:
          mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4.0 -Dpackaging=jar -Dfile=ojdbc6.jar
        b.准备mybatis的配置文件:
          现在因为数据源应该交给spring来管理,数据库连接对象应该由spring来创建
          通过由第三方的工具,来创建和管理我的数据源:
          常见的数据源工具有:commons,c3p0,druid..
          这里使用apache提供的commons数据源:
          第一步,添加commons数据源依赖;
          第二步,spring配置文件中,添加bean,并添加必要的连接参数;
            app.xml文件中,配置连接工厂
            配置连接工厂的时候,又需要添加mybatis-spring依赖;
            准备实体映射文件,实体类,并在mybatis配置文件中引入;

    ------------------------------------------------------------------


    43.我们知道用户请求URL可以注解的方式来把UR与控制器controller映射起来,
    但怎么样把控制器controller 与业务模型映射起来是url通过controller找到对
    应的业务模型?也即是说控制器与业务模型怎么样建立关系?

    ------------------------------------------------------------------


    44.Spring MVC的核心入口类是什么,Struts2 的是什么?

    ------------------------------------------------------------------


    45.Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决

    ------------------------------------------------------------------


    46.SpingMVC中的控制器的注解一般用那个,有没有别的注解可以替代

    ------------------------------------------------------------------


    47.@RequestMapping注解用在类上面有什么作用

      可以让页面请求.jsp找到业务类;同时找到业务中实现具体业务的方法

    ------------------------------------------------------------------


    48.怎么样把某个请求映射到特定的方法上面

    ------------------------------------------------------------------


    49.如果在拦截请求中,我想拦截get方式提交的方法,怎么配置

    ------------------------------------------------------------------


    50.如果在拦截请求中,我想拦截提交参数中包含"type=test"字符串,怎么配置

    ------------------------------------------------------------------


    51.我想在拦截的方法里面得到从前台传入的参数,怎么得到

    ------------------------------------------------------------------


    52.如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这
    个对象

    ------------------------------------------------------------------


    53.怎么样在方法里面得到request,或者Session

    ------------------------------------------------------------------


    54.Spring MVC中函数的返回值是什么.

    ------------------------------------------------------------------


    55.Spring MVC怎么处理返回值的

    ------------------------------------------------------------------


    56.Spring MVC怎么样设定重定向和转发的

       -------------------------------------------------------

      (1)return "forward:login"; //服务器端跳转

      (2)return "redirect:login"; //客户端跳转-浏览器自己重定向(浏览器地址栏重新写个地址重新去发请求)-get

    isreg- 注册页面
    prelogin-登录页面
    
    
    return "forward:prelogin";//服务器端跳转
            //服务器跳转:前后两个方法,提交方式一致的时候,可以跳转;不一致的时候,就不能跳转
                isreg--post,prelogin--post==> 可以跳转
                isreg--post,prelogin--get  ==> 不能跳转
                isreg--get,prelogin--get  ==>可以跳转
                isreg--get,prelogin--post ==>不能跳转
    
    return "redirect:prelogin";//客户端跳转
            //客户端跳转:只能跳转到get里面;不能跳转到post
                isreg--get,prelogin--post  ==>不能跳转
                isreg--get,prelogin--get   ==>可以跳转
                isreg--post,prelogin--get   ==>可以跳转
                isreg--post,prelogin--post  ==>不能跳转


    服务器端跳转和客户端跳转的区别:
      1.服务器跳转是一次请求; 客户端跳转是两次以上的请求;
      2.服务器端跳转时,地址不会发生改变; 客户端跳转的时候,地址栏的地址发生了改变;
      3.服务器端跳转时,可以通过reqeust来传递参数; 客户端跳转时,不能通过request来传递参数;

      认知:  转发: 1.服务器端跳转(一次请求)      2.地址栏地址不变        3. 可以通过request传递参数

              重定向: 1.客户端跳转(二次以上请求)   2.浏览器地址栏地址变化     3.不可以使用request

    ------------------------------------------------------------------


    57.Spring MVC用什么对象从后台向前台传递数据的

    ------------------------------------------------------------------


    58.Spring MVC中有个类把视图和数据都合并的一起的,叫什么

    ------------------------------------------------------------------


    59.怎么样把ModelMap里面的数据放入Session里面

    ------------------------------------------------------------------


    60.Spring MVC怎么和AJAX相互调用的

    ------------------------------------------------------------------


    61.当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理

    ------------------------------------------------------------------

    61.web项目的结构

      部署项目的过程:

       在src-main-webapp中把所有内容|放在Tomcat-webapps(Apache-Software-FoundationTomcat 8.5webapps)
      Tomcat 8.5webappsssm_01WEB-INF-classes

    ------------------------------------------------------------------

  • 相关阅读:
    对象参数dojo异步编程之dojo/promise/all模块(dojo/DeferredList替代者)
    文件进程linux系统编程之文件与I/O(五):打开文件的内核结构file和重定向
    代码配置spring scala
    返回行javascript比较时间大小
    项目邮件[置顶] 失业的程序员(十二):潜意识的智商
    地址变形Uva 11401 Triangle Counting
    节点拓扑应用拓扑排序来解决DAG(directed acylic graph)的单源最短路径问题
    TortoiseGit使用入门
    RGMII
    ARM处理器系统初始化编程注意事项
  • 原文地址:https://www.cnblogs.com/ren549047861/p/11294789.html
Copyright © 2020-2023  润新知