springMVC学习(一)

一 :
 
=====================================================================================================================================================
(一)   框架搭建
        第一步: 导入依赖
        第二步: 书写主配置文件     web.xml    springmvc.xml
        第三步: 启动Tomcat测试
        --------------------------------------------------------
        mvc层  专注控制层     规范在java先建立 controller 包
        --------------------------------------------------------
        1/ 建立jsp 测试
            题外话: 虚拟路径--为什么可以找到对应的页面?-->过滤器:DispatcherServlet --->核心控制器(负责派发到相应的数据处理器)   ==Servlet
        2/ 配置web.xml
            a/---------------------------------------------------
                -->    这里配置完成了springmvc的核心类配置 :springmvc还需配置 核心配置文件
                -->    DispatcherServlet  有三个参数    这里主要是   contextConfigLocation      用来指定上下文配置
                -->    如果控制跳转的xml的配置文件在WEB-INF下,并且命名规范遵循   [servletName]-servlet.xml  ,则可以不用配置contextConfigLocation属性
                --------配置contextConfigLocation及其.xml文件 保证容器启动时加载;
            ____________________________________________________________________________________________________________________________________________
                <servlet>
                    <servlet-name>spr_mvc</servlet-name>
                    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                        <init-param>
                               <param-name>contextConfigLocation</param-name>
                               <param-value>classpath:spr_mvc-servlet.xml</param-value>
                        </init-param>
                    <load-on-startup>1</load-on-startup>
                </servlet>
                <servlet-mapping>
                    <servlet-name>spr_mvc</servlet-name>
                    <url-pattern>/</url-pattern>      ------------>这里不要写/*,这是一种错误的url写法
                </servlet-mapping>
            ______________________________________________________________________________________________________________________________________
        3/ 配置spr_mvc-servlet.xml        springMVC上下文核心配置文件    (通俗的将就是控制跳转的文件 ,即 我们所提到的Servlet )
             a/----------------------------------------------------
                --->导入所需要的头文件     包括mvc   context  等  所需要的
                --->开启注解扫描     指定到需要扫描的包
                    ----|   <context:component-scan base-package="cn.xsh.controller"></context:component-scan>
                --->开启springMVC特有的注解驱动
                    ----|   <mvc:annotation-driven/>
        4/视图解析器   ---将url分成前缀和后缀
             ____________________________________________________________________________________________________
                     <!--视图解析器   视图解析器只对转发有用,对重定向无效.-->
                        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                            <property name="prefix" value="/"></property>
                            <property name="suffix" value=".jsp"></property>
                        </bean>
             ____________________________________________________________________________________________________

                       至此完成简单的springMVC的基础建设 !!!!!!!!!!

=====================================================================================================================================================
(二)  主要注解笔记
       1/ @Controller
                标注在类的上边后,该类转化为Servlet的实现类, 这个注解的优势在于 标注后不需要再像Servlet那样去继承父类 ,同时不需要再web.xml中配置相关的参数等
       2/@RequestMapping    ------  (注意: 如果在传入对象的时候,前端的标签命名应遵守和实体类属性命名一直,保证顺利传值)------
              参数--------------值:及其作用
              value  ---------> 虚拟路径的值,如果用{}包起来后,其值可以是多个,值和值之间用逗号隔开,值用双引号包起来
                            -->这个位置最好是不带任何尾缀,这样当修改web.xml的Servlet中pattern时   可以是*.任意, 这样访问的时候可以通过拼接..便于日后修改程序
              method ---------> 提交的方式:有get和post
        3/@Scope   默认是singleton    这个注解是用来修饰类的
                   但是项目是发布到Tomcat上,一般会创建一个多例的模式  @Scope("prototype")
                   因为如果是单例的话,当涉及到两个以上的多用户访问的时候,只有等第一个用户访问完毕后后续用户才可使用,影响用户体验和工作,而多
                   例的时候多用户访问创建多个对象,用户之间使用互不干扰,当然涉及到的高并发此处未做相关查询.....
        4/@RequestParam(name="",defaultValue = "" ,required = true)          当前台属性和类属性不一致的时候  做处理       空值的时候可以获取默认值
                参数         值:及其作用
                name        前台传过来的数据的Key
                defaulValue         默认值
                required     true/false     true的时候是该参数必须传入,未传入则返回异常
====================================================================================================================================================
( 三 ) 视图的重定向和转发
       1/ 在方法return的地方  --->  return "forward : 视图名 ";    转发   适用于处理业务逻辑    前端url不变
       2/ 在方法return的地方  --->  return "redirect: 视图名 ";    重定向    适用于表单提交 防止重复提交     url会改变
        相对应传统的Servlet重定向需要加工程名,在springmvc中直接省略
===================================================================================================================================================
 ( 四 )  中文乱码解决
          1/配置一个过滤器
          2/在web.xml中引用已经写好的类,通过spring的ioc/di依赖注入编码类型   === 其优点是软编码 可以动态更改编码类型
              <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>
              </filter>
              <filter-mapping>
                  <filter-name>encodingFilter</filter-name>
                  <url-pattern>/*</url-pattern>
              </filter-mapping>
================================================================================================================================================
 ( 五 ) 数据的传输   如何传输到页面    这里记录三种方式
        1/通过Request    方法参数里引入HttpServletRequest
        2/通过Model      addAttribute(key,value)  放入值     默认存储在Request域中
        3/通过Map       spring将map这种形式的数据放到了Request的域中
================================================================================================================================================
 ( 六 )  统一异常处理           ( public class Exception extends Throwable          源码显示  异常的祖宗是 Throwable  其两个子类[error,exception])
                     [题外话:对于异常,从接触java异常开始,一般遇到项目第一想法便是抛出,那么如下:
                                          dao --->抛出到service层          [注:如果这里不处理,500错误,有些异常捕获后,404错误]
                                          service调用dao,有异常抛出 ====>   到了controller层     异常的终点 ,这里必须对异常进行处理]
    通过注解  :     @ExceptionHandler(Exception.class)
                对于全局异常的处理我们也可以提取出来放在一个公共的包里 对各种异常进行处理,从而达到代码更加干净简洁,便于管理.使用下面这个注解
                    @ControllerAdvice      // 标注在类的上面
                    public class Ex {
                        @ExceptionHandler(Exception.class)
                        public String test1(){
                            return "error";
                        }
                    }
    对于异常的处理,全局的异常处理里面,精确的异常要优先于更大范围的异常处理方式,通过精确度的大小,jvm会自动进行选择,做出对异常的处理方式.              
===============================================================================================================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值