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-Foundation\Tomcat 8.5\webapps)
  Tomcat 8.5\webapps\ssm_01\WEB-INF-classes

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

 

posted @ 2019-08-03 14:41  任我行的编程乐园  阅读(340)  评论(0编辑  收藏  举报