SSH框架总结一个使用struts2框架的web应用程序实例一个使用hibernate框架的java应用程序实例一个使用spring框架的应用程序实例最后SSH框架整合的web应用程序实例
web.xmlstruts.xmlhibernate.cfg.xmlbeans.xml
Java应用分层三层分层(表现层、业务逻辑层、持久化层)SSH框架Struts框架,针对表现层(web层),负责页面展示和控制转发Hibernate框架,针对持久化层(底层数据层),负责数据的持久化操作Spring框架,针对业务逻辑层,负责创建Bean对象和管理Bean对象Struts框架要点Hibernate框架要点Spring框架要点SSH整合Struts框架要点1、MVC(Model-View-Controller)中文翻译为\"模型-视图-控制器
MVC设计模式的目的是:保证视图和模型的隔离各个部分的实现技术可以总结如下:1)Model:JavaBean、EJB的EntityBean2)View:JSP、Struts的TagLib3)Controller:Struts的ActionServlet、Action2、在eclipse中开发struts应用的步骤1)创建Web项目。2)导入Strutrs的几个必须包(12个jar)。3)在src目录下,创建struts.xml配置文件(名字和路径都不能改)。4)在WEB-INF目录下,创建web.xml配置文件,添加Struts的支持(配置一个filter过滤器)。5)在src目录下,创建action类6)在webContent目录下,创建JSP页面7)运行3、struts的运行流程和开发流程1)、在web.xml文件中定义核心Filter来拦截用户的请求。2)、如果需要post方式提交请求,则定义包含表单数据的JSP页面3)、定义处理用户请求的Action类。4)、配置Action5)、配置处理结果和物理视图资源之间的对应关系6)、编写视图资源4、struts配置1)web.xml配置(核心Filter拦截配置)-------------------------------------------org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*struts2--------------------------------------------2)struts.xml配置常量配置、action配置、result配置、异常处理配置struts常量配置配置文件:struts.xml配置格式:常用的常量:常量配置有3种方式:struts.properties,struts.xml,Web应用的web.xml
包含其他配置文件:配置文件:struts.xml配置格式:struts的action配置配置文件:struts.xml配置格式:/WEB-INF/content/error.jsp/WEB-INF/content/welcome.jsp/WEB-INF/content/{1}.jsp动态方法调用注意:1.在配置的时候,不用指定具体的方法(不用写method=“XXX”);2.在请求action的路径指定需要执行的方法名即可。(格式:action名!方法名.action)使用通配符进行模糊匹配:{1}.jsp注意:使用“*”号表示模糊匹配的值。{1}表示占位符,在运行的过程中,被通配符所代替。在这个Action的配置文件中,都可以使用{1}占位。struts的result配置配置文件:struts.xml配置格式:/WEB-INF/content/error.jspresult的type类型:chain、dispatcher、freemarker、redirect、redirectAction、stream、plaintext、velocity、xslt默认是dispatcher页面路径type=”dispatacher”用于指定使用JSP作为试图的结果类型。type=”redirect”重定向,直接跳转到其他的URL结果类型,注意跳转request中的数据将会丢失。type=”redirectAction”表示跳转的页面将会是一个Action。action的名字命名空间的名字原样输出指定的页面:test.jsputf-8全局结果配置:test.jspindex.jsp注意:必须在action的最前面。全局异常处理:在异常处理页面,显示异常的信息:<%@tagliburi=\"/struts-tags\"prefix=\"s\"%>异常的信息:Struts2异常处理配置Strtus2的异常处理机制:Struts框架接收到Action抛出的异常之后,将根据struts.xml文件配置的异常映射,转入指定的视图资源.在struts.xml文件中配置,其属性有:exception,指定该异常映射所设置异常类型result,指定action出现异常,系统返回result属性值对应的逻辑视图名异常映射的分类局部异常映射,只对所在的Action有效全局异常映射,对所有Action都有效5、创建Action业务控制器Action类可以是普通的Java类(POJO)Action是应用的核心。开发者需要提供大量的Action类,并在struts.xml文件中配置Action.Action类包含了对用户请求的处理逻辑,Action类也被称为业务控制器如何实现Action?Struts2框架提供了三种方式:1.一个简单的类;2.实现自Action接口;3.继承ActionSupport类6、Struts2的国际化(I18N)7、struts2的标签库控制标签:if|elseif|else标签iterator标签:用来对集合进行遍历append标签:将多个集合拼接组合成一个集合generator标签:将指定的字符串分割多个子字符串,并将它们放置到一个集合merge标签subset标签sort标签数据标签:action标签bean标签date标签debug标签include标签set标签push标签property标签1.错误提示标签:actionerror标签,fielderror标签。
表单标签:form、checkboxlist、radio、select、optgroup、head、updownselect、doubleselect、optiontransferselect、token、8、Struts2运行原理请求--->自定义过滤器---->filterdispatcher------>ActionProxy(代理,读取struts.xml的配置文件)---->ActionInvocation(action的调用者,调用具体的Action;在调用之前经过一系列的)——>执行完Action之后,跳转到对应的页面。9、struts2的类型转换1、struts2内建的类型转换器2、基于OGNL的类型转换3、自定义类型转换器基本数据类型+String类型都是可以自动转换。对象类型自动转换:在input中使用:对象名.属性名注:需注册才可以使用关于类型转换器的注册方式,A、注册局部类型转换器:仅仅对某个Action的属性起作用。B、注册全局类型转换器:对所有Action的特定类型的属性都会生效。局部文件名:ActionName-conversion.properties配置格式:=存放位置:和ActionName类相同路径。全局文件名:xwork-conversion.properties配置格式:=存放位置:和ActionName类相同路径。10、struts2的输入校验一)验证分类:1)服务器端验证2)客户端验证二)Struts的内置验证框架:Struts2中验证有两种方式:1)手动验证。2)配置验证框架,自动验证。(使用内建校验器)三)内置验证框架使用步骤:1)需要验证的Action必须继承自ActionSupport类。2)创建验证配置文件。编写校验规则文件(字段风格、非字段风格)要求:a)配置文件必须和action在同一目录。b)文件名的格式必须是:Action类名-validation.xml(验证Action中的所有方法)Action类名-访问Action的名字-validation.xml(只会验证Action中指定的方法)3)查看内置验证器:xwork-XXXXX.jar目录中(找到default.xml配置文件)特别需要注意:注意哦!1.使用了验证器之后,如果验证失败;必须配置表示验证失败之后,跳转的页面。四)手动验证步骤:1.继承ActionSupport,重写validate()方法。在执行Action中具体的方法之前,会先执行validate()方法;如果有错误,则返回input指定的页面。(有错误:super.addFiledError())2、重写validateXxx()方法五)内建校验器11、struts的文件上传上传:1)在form标签中添加“enctype=multipart/form-data”和method=“post”属性。2)Form表单中添加文件域3)在Action中,定义属性,用来接收上传的文件(属性必须定义3个:文件的内容、文件的名字、文件的类型)。4)通过文件的读写,将文件保存。(输入流的read方法和输出流write方法)12、struts2的文件下载JSP表单:下载图形文件Struts.xmlimage/jpgtargetFilefilename=\"wjc_logo.jpg\"4096Action类privateStringinputPath;publicInputStreamgetTargetFile()throwsException{returnServletActionContext.getServletContext().getResourceAsStream(inputPath);}13、struts2的机制使用FileUpload可以上传文件的大小1000000上传文件的类型image/gif,image/jpeg,image/png,image/jpgstruts2的内建配置使用的配置语法配置默认实现类使用,定义多个,定义单个定义栈使用或栈为指定参数使用默认栈14、struts2的ajax支持Jar包:Jquery框架$.get(url,senddata,callback,html)Action类中数据封装(json)Struts.xmlHibernate框架要点1、Hibernate概念在分层体系结构中Hibernate位于持久层,是完成对象持久化的持久层框架Hibernate是连接java应用程序和关系型数据库的框架,能够建立对象模型和关系数据模型之间的映射,是一种自动ORM框架Hibernate是对JDBCAPI的封装,是JDBC轻量级封装框架2、ORM概念ORM(Object-RelationMapping)对象关系映射为了解决面向对象与面向关系数据库存在的互不匹配的现象面向对象概念类对象属性面向关系概念表记录列3、Hibernate配置总体配置hibernate.cfg.xmlhibernate.properties管理把一个普通类变为持久化类1)注解方法2)XML配置文件方法(XXX.hbm.xml)4、ConfigurationConfiguration的作用1)负责管理Hibernate的配置信息Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等2)负责创建SessionFactory对象5、SessionFactory1)SessionFactory的作用1、缓存Hibernate配置信息和映射元数据信息2、负责创建Session实例2)SessionFactory的创建configuartion.buildSessionFactory()3)SessionFactory是线程安全的,多个应用线程间进行共享,一般整个应用只有唯一的一个SessionFactory实例6、Session1)Session是Hibernate持久操作的基础核心1、它代表与数据库之间的一次连续操作2、Session负责执行访问数据库的操作,比如保存、更新、删除、加载和查询,也称为持久化管理器2)Session的创建Sessionsession=sessionFactory.openSession();3)Session是一个轻量级对象,是非线程安全的,通常和一个数据库事务绑定7、Transaction——事物管理调用代码:Transactiontx=session.beginTransaction();注:使用Hibernate进行操作时必须显式的调用Transaction(默认:autoCommit=false)8、实体关联关系映射9、Hibernate缓存管理Hibernate采用二级缓存机制一级缓存(Session缓存)处在session缓存中的对象被称为持久化对象二级缓存(SessionFactory缓存)10、持久化对象的状态3个状态:(P396演化图)瞬态持久化脱管11、HQL查询•••//开始事务Transactiontx=session.beginTransaction();//定义批量更新的HQL语句StringhqlUpdate=\"updateUserusetname=:newName\";//执行更新intupdatedEntities=session.createQuery(hqlUpdate).setString(\"newName\\"新名字\").executeUpdate();//提交事务tx.commit();••••••Spring框架要点1、IoC(控制反转)的概念2、DI(依赖注入)的概念设计模式主要的目的是将对象之间的关系进行解耦3、使用容器来管理组件好处:1)减少不同组件之间的耦合2)控制返回,将查找请求委派给容器3)将主动查找转为被动接受4、依赖注入的方式1)设值注入2)构造注入5、Spring框架的核心组成1)核心IoC容器是所有其他模块的基础2)对AOP的支持面向切面编程,能够实现更好的模块化结构,可动态为系统增加新的功能而不影响原系统结构3)对数据访问的封装a)对访问数据库定义一致的接口,对JDBC进行模板化封装4)声明式事务a)提供了一致的事务模型,通过指定事务属性,不必编写复杂的事务管理代码,将事务交给容器去做,并能获得高可移植性5)WebMVC框架a)Web模块提供了一系列针对Web开发的基础功能(如文件上传,参数绑定等)。还用于集成其他Web框架6、spring容器BeanFactoryApplicationContextBeanFactory与ApplicationContext差别1)应用上下文提供了更多附加功能2)单实例Bean的载入方式不同a)Bean工厂延迟载入所有的Bean,直到getBean()方法被调用时Bean才被创建b)应用上下文会在上下文启动后载入所有的单实例Bean。通过预载入单实例Bean,确保当需要的时候它们已经准备好了。7、Bean的Scope属性Scope属性指定Bean的作用域范围1)默认:singleton,单例模式2)prototype:多例,每次取得Bean时都创建一个新对象3)针对Web应用程序环境request:请求阶段session:会话阶段globalSession:基于Portlet的Web应用会话阶段8、依赖注入1)注入基本类型2)注入引用类型3)注入Map、List、数组9、AOP(面向切面编程)的概念AOP(Aspect-OrientedProgramming):1)面向切面编程2)是对传统OOP的补充3)不是取代OOP,经常与OOP一起使用10、AOP中的概念切面连接点切入点增强处理Before增强处理After增强处理AfterRetruningAfterThrowingAroundSpring与Struts整合1、web.xml配置1)Struts2使用Filter配置2)Spring使用Listener配置IOC容器指定配置文件的位置-----------------------------org.springframework.web.context.ContextLoaderListenerstruts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*-------------------------------2、Bean配置文件中配置ActionapplicationContext.xml------------------------------------------------------------------3、struts.xml配置---------------------------------------------------------------/WEB-INF/content/error.jsp/WEB-INF/content/welcome.jspSpring与Hibernate整合1、Spring中配置dateSource2、Spring中配置sessionFactorysessionFactory中注入dateSource3、Spring中配置daodao中注入sessionFactory