一、spring框架的使用

  • IOC容器:javabean的注入是springIOC最强大也是最方便的技术,以前我们需要new一个对象来完成对java类的实例化,现在spring框架通过DI注入的方式为我们提供了一个容器,也可以理解为机器,以前我们需要手动的去做产品,整个实例化过程都需要我们的参与,现在这个自动化的机器只需要你在xml文件里将类注入,框架就可以直接帮助你实例化java类,并讲这些javabean组件放在一个你可以叫做IOC的容器里,只不过这里因为实在xml文件的bean标签里注入的实体类,所以这里叫做javabean,也叫做Bean,在项目的开发过程中,我们需要类与类之间需要不断的传递数据,比如我们的dao层面向的是与数据库交互的操作,查询的时候数据从数据库流入到dao层,这时候需要service层接收并通过controller层传递给web层,这里的类与类之间的互调和方法互调的原理差不多,只要在某一个javabean中注入其他类的javabean就可以实现互调。当然也可以通过注解的方式互调,基本的原理都一样。那么除开注解注入的方式其他的注入方式:setter注入以及构造器注入,静态工厂、实体工厂注入这几种方式其实都是类似的原理。
  • 采用setter注入的方式,互调的基本格式就是<bean id="自定义的id" class="java类的classpath"><property name="调用的javabean的id" ref="调用的javabean的原类名"></bean>一定要注意的是在java类中调用的时候要使用生成setter方法与我们注入的bean关系对应(以下的例子就是调用jdbcTemplate的方式,代码段一是UserDao调用JdbcTemplate的代码,代码段二是javabean的setter注入):
    private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}
    !--    配置userDao--><bean class="com.hlc.dao.UserDaoImpl" id="userDao"><property name="jdbcTemplate" ref="jdbcTemplate"/></bean>
  • 采用注解的方式需要注意的是context命名空间的设置与使用:1、扫描组件,2、扫描资源文件:
  • <!--    加载properties文件内容,注意这里的classpath的必要性--><context:property-placeholder location="classpath:jdbc.properties"/><!--    组件扫描:通常用在mvc的配置文件里--><context:component-scan base-package="com.hlc.controller"/>
  • spring监听器的使用:监听器的使用直接可以在我们打开服务器的时候就完成容器的自动创建,不需要手动的写ApplicationContext app = new ClassPathXmlContext("applicationContext.xml"s)结合app.getBean(XXX.class)创建容器了。使用的方法是一套的:在web.xml 文件里设置好context-param,并将listener设置好:
  • <!--全局参数,给监听器用的--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param>
    <!--监听器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
  • 反射:IOC实现控制反转的底层原理就是java反射,关于java反射可以查看我的文章:http://t.csdn.cn/Tn7n7

二、springmvc框架的使用

  • springmvc前端控制器DispatcherServlet:这个家伙就是springmvc提供给我们的强大中央处理器,一整个web层面的请求与数据的中央媒介,它的设置与标签的属性:
  • <!--servlet请求分发器,也可以称为中央控制器--><servlet>
    servlet服务名称<servlet-name>DispatcherServlet</servlet-name>
    这行代码是指向DispatcherServlet的路径,当然这个路径是springMVC框架提供的<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    定义初始化参量,在DispatcherServlet创建的时候就会访问读取这个初始化参量里的内容<init-param>
    初始化参量名<param-name>contextConfigLocation</param-name>
    初始化参量的值,这里指向的是我们写好的springMVC的配置文件路径<param-value>classpath:springMVC.xml</param-value></init-param>
    这行代码英文意思就是启动开始,可以认为里面的数值是加载servlet的优先值,都是正整数的话就是,谁小谁先被加载,如果是0则是初始化容器时加载。如果是负数就是选择加载了。<load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name>
    这的/是所有,之前看别人写的是*.do,好像是之前的那个框架的写法吧<url-pattern>/</url-pattern></servlet-mapping>
    
  • springmvc提供的新注解:实现web路径的设置也可以理解为与提供一个服务器标识的路由,用来和前端接合@RuequestMapping(value="/xxx"),实现数据回写:@ResponseBody,实现数据请求:@RuequestParam等等。
  • springmvc的注解驱动与默认静态资源访问权限的开放:
  • <!--默认的是静态资源权限开放--><mvc:default-servlet-handler/>
    <!--注解驱动--><mvc:annotation-driven/>
  • springmvc的内部资源视图解析器:
  • <!--内部资源视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver"><property name="prefix" value="/pages/"/><property name="suffix" value=".jsp"/></bean>
  • springmvc的context与springmvc的mvc命名空间的设置方法一致。

三、jdbcTemplate的使用

  • 设置数据源:使用spring容器为我们完成这个工作,当然就是把C3P0数据源类注入到springIOC容器中,代码固定,实现解耦将数据库驱动密码等信息放置到一个叫做jdbc.properties的文件中:
  • <!--    先加载properties文件内容,注意这里的classpath的必要性--><context:property-placeholder location="classpath:jdbc.properties"/>
    <!--    再进行数据源的配置--><bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource"><property name="driverClass" value="${jdbc.driver}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>
  • 设置JdbcTemplate模板对象的注入
  • <!--    配置jdbcTemplate--><bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate"><property name="dataSource" ref="dataSource"/></bean>
    
  • JdbcTemplate模板的使用:我们已经将它使用setter注入到容器中了,那么我们在类中直接调用它就可以使用,具体的格式是:jdbcTemplate.update(sql:"",values)/jdbcTemplate.query(sql:"",new BeanPropertyRowMapper<java实体类>(java实体类.class))

SSJ项目给我的感悟相关推荐

  1. java ssj_一个小论坛, 一个Java单体应用, 一个SSJ项目, 一个模块化项目

    基础模块: member, core, letter(内部消息), strategy(策略模块), utils(工具), decorater(装饰模块), event(事件定义), bucket(站外 ...

  2. 做大创项目的一点点感悟

    今天和学长.老师讨论了一波,发现自己在前期的工作中,存在着很多问题. 对于采取的算法,没有明确的评价指标 我在做的是图像增强部分,但是还是服务于之后的目标检测,因此,不能仅依靠于视觉效果作为评价算法好 ...

  3. 深入理解文档/视图框架体系_九宫格项目开发感悟

    1.项目起源以及采用文档/视图框架体系缘由 我们整天都在说:文档保存项目的数据并处理项目上的数据:视图通过关联获得文档的数据并进行可视化:主窗口框架接收外部事件消息并进行消息分配.这句口头禅感觉接触过 ...

  4. ssj(spring+springMVC+jpa)项目速建

    一:搭建基本框架 1:导入css和bootstrap文件夹到webapp目录下. 2:在src/main/java目录下创建包结构 controller+model+repository+servic ...

  5. 总结XX餐饮收银项目中的得与失

    今天上午在米老师和坤哥主持,丁老师.李老师旁听的形式下,我们六期全体对前一个项目-XX餐饮收银系统项目中的得与失进行总结.讨论. 这个项目算是第一个在真实不确定需求的情况下进行的一次商业软件开发. 项 ...

  6. 充分掌握网络工作原理及底层实现 大家都做什么项目啊?

    张孝祥,张老师是软件编程语言培训和软件工程师速成培训专家.精通c/c++/vc++.vb.java.sql server.oracle.asp.jsp.j2ee.android等编程语言和数据库系统, ...

  7. 2020中国项目经理视频直播大会成功举办

    6月20-21日,由PMO评论主办的"2020中国项目经理视频直播大会"成功举办.大会以"点亮项目 锦鲤人生"为主题,采用线上视频直播形式召开,来自IT.金融. ...

  8. Sidney网站分析感悟:无细分,毋宁死

    Sidney网站分析感悟:无细分,毋宁死 [前言] 细分是网站分析的灵魂所在,细分是发现真相的必由路径,对我而言,无细分,毋宁死.在所有网站分析的思维方式之中,细分是最为重要的一课,没有之一.这将不是 ...

  9. 项目中沟通的几种方法对比

    在项目中的沟通方式有很多种,比如晨会.日报.周会.周报.邮件和聊天等. 进行沟通的目的可以是了解项目进度,通知项目进展,了解成员问题等 今天分享一下自己在项目中对使用这几种沟通方式的体会. 晨会,晨会 ...

最新文章

  1. php中年月日用什么参数,PHP中date()日期函数参数整理
  2. js实现图片不能显示时使用替换图片显示
  3. npm run buil构建后页面白屏_从Npm Script到Webpack,6种常见的前端构建工具对比
  4. nginxtomca负载均衡
  5. 2021技术人新展望
  6. Python 按坐标进行文字剪裁
  7. linux 权限拒绝,linux – 权限被拒绝,虽然文件是chmod 777
  8. Android笔记 android 7.0 动态申请权限
  9. 【JVM】G1垃圾回收器
  10. powerdesigner导入sql生成pdm没有注释_PDM手写签名实现方法
  11. 数据预处理—5.box-cox变换及python实现
  12. 云表中表单配置内嵌浏览器
  13. 数字资产期权新手入门手册 | TokenInsight
  14. 服务器英文系统怎么切中文,云服务器怎么把英文改成中文
  15. “add measurements”(添加度量)菜单问题
  16. An attribute defined in json.encoder line 158 hides this methodpylint(method-hidden)
  17. 读美妆论文AN AUTOMATIC FRAMEWORK FOR EXAMPLE-BASED VIRTUAL MAKEUP
  18. 将一个DataFrame中的一列(行),插入到另一个DataFrame中
  19. 【分享】推荐一些不错的计算机书籍
  20. L1 L2正则化和优化器的weight_decay参数

热门文章

  1. python DataScience数据分析笔记day06
  2. elasticsearch简单使用和ELK的集成
  3. 男人四十以后适合在哪个行业创业?为什么?
  4. 铝模板18个标准化安装步骤,照此做法错不了
  5. linux srr 乱码,批量下载SRR数据
  6. [机器学习]随机森林源码(python)
  7. 数据仓库1-数仓的意义
  8. 多旋翼无人机组合导航系统-多源信息融合算法附Matlab代码
  9. 中国科学技术大学计算机研究生在哪个校区,中国科学技术大学有几个校区及校区地址 哪个校区最好...
  10. [LGP2791] 幼儿园篮球题