ssh总结

来源:互联网 发布:中国报学史读后感知乎 编辑:程序博客网 时间:2024/05/16 14:25

一、Hibernate

1、 主键生成策略

1.1<!-- 数值类型 -->

<!-- assigned手工生成 -->

<!--  

<id name="tid" column="tid">

<generator class="assigned"></generator>

</id>

-->

<!-- native通用(如果是mysqlsqlserver自动查找自增长列,如果是oralce或则db2会找hibernate_sequence的序列,hibernate_sequence需要在数据库里创建) -->

<!--  

<id name="tid" column="tid">

<generator class="native"></generator>

</id>

-->

<!-- identity 只针对sqlserver使用,oralce不能用-->

<!--  

<id name="tid" column="tid">

<generator class="identity"></generator>

</id>

-->

<!-- increment 查询数据字段中最大致加1方式生成主键(并发操作有问题) -->

<!--  

<id name="tid" column="tid">

<generator class="increment"></generator>

</id>

-->

<!-- sequence 使用序列,只有Oracle可以用-->

<!--  

<id name="tid" column="tid">

<generator class="sequence">

<param name="sequence">seq_temp_tid</param>

</generator>

</id>

-->

1.2<!-- 字符类型 -->

<!-- assigned手工生成 -->

<!--  

<id name="tid" column="tid">

<generator class="assigned"></generator>

</id>

-->

<!-- uuid   主键为随机生成的32位伪列-->

<id name="tid" column="tid">

<generator class="uuid"></generator>

</id>

二、DWR使用(在dwrpro项目中)

2.1什么是DWR

DWR Direct Web Remoting

开源,免费的Ajax框架

Java类发布为JavaScript可调用的脚本对象

提供JavaScript工具类,简化页面编码

2.2为什么要使用DWR

DWR其功能的强大在于它可以用一种前所未有的便利方式将前端页面中的js与后端服务器中的java程序进行直接的转换。比如,它可以将java程序中的某个类在js中生成一个相应的对象,并可以调用发布的方法

2.3实现的3个步骤:

1、安装DWRJAR文件

   dwr.jar放置在应用程序的WEB-INF/lib下;

   DWR2.0开始需要commons-logging.jar类库。

2、编辑DWR配置文件

   修改WEB-INF/web.xml 加入DWR servlet

      

   WEB-INF 下创建dwr.xml文件

     <!-- dwr配置根标签 -->    

<dwr>

<!--

allow标签  java类和js脚本关系

-->

<allow>

<!-- 下面为测试环境使用(正式开发时不需要写) -->

<!--

create标签    创建DWR对象

creator属性   默认为new

javascript属性    前台js调用对象的名称

-->

<create creator="new" javascript="JDate">

<!--  

param标签    参数设置

name属性     默认为class

value属性    后台java类的名称

-->

<param name="class" value="java.util.Date" />

</create>

<create javascript="Test" creator="new">

 <param  name="class" value="com.web.dwr.TestDwr"></param>

</create>

<!-- 如果参数或者返回值中包含对象 -->

<convert converter="bean" match="com.web.vo.User" />

</allow>

</dwr>

3、测试DWR是否配置成功

  在浏览器地址栏中输入:

  http://localhost:8080/dwrme/dwr/index.html

  其中:dwrme表示项目工程名

       /dwr/index.html是固定的路径

4、运用在相应的Jsp页面

   <!-- DWR中在Jsp页面必须添加此三行代码,/dwr/interface/Test.jsTest.js表示在dwr.xml中定义的js对象(javascript属性内容)-->

<script type="text/javascript" src="<%=path %>/dwr/engine.js"></script>

   <script type="text/javascript" src="<%=path %>/dwr/util.js"></script>

   <script type="text/javascript" src="<%=path %>/dwr/interface/Test.js"></script>

<script type="text/javascript">

function fun1(){

        //getString是在TestDwr类中定义的方法,Test.getString表示对象名.属性名

        //Testjavascript对象

Test.getString(function(data){//此处的function是回调函数

alert(data);

});

}

</script>

<input type="button" value="返回值是字符串" onclick="fun1()"/>

 

Map集合参数赋值:(键值对)

var map = {"110":"lifan","111":"zhangsan","112":"lisi"};

对象参数赋值:(键值对)

       var user = {"usercode":"lifan","password":"123456"};

List集合参数:

       var list = ["呵呵","哈哈","哦哦"];

 

       function fun9(){

var list = ["呵呵","哈哈","哦哦"];

Test.paramList(list,function(data){

alert(data);

});

 }

 

function fun10(){

var map = {"110":"lifan","111":"zhangsan","112":"lisi"};

Test.paramMap(map,function(data){

alert(data);

});

}

function fun11(){

var user = {"usercode":"lifan","password":"123456"};

Test.paramUser(user,function(data){

alert(data);

});

}

<input type="button" value="Map集合参数" onclick="fun10()"/>

  <input type="button" value="对象参数" onclick="fun11()"/>

<input type="button" value="List集合参数" onclick="fun9()"/>

三、Struts2

3.1Struts2中配置控制类

<!-- struts根标签 -->

<struts>

<!--

package标签   配置包(可以有多个)

name属性    随便写(不能重名)

extends属性   继承struts框架核心功能  固定:struts-default

namespace属性   命名空间(url访问的前缀)

-->

<package name="hellopack" extends="struts-default" namespace="/">

<!--

action标签  配置具体action实现(action可以有多个)

name属性  请求地址字符串;必须与前台的表单或者链接请求到struts后台输入的地址一样(URL

class属性   接受前台请求,并处理要前台数据的相应的完整类名

-->

<action name="hello" class="com.web.action.HelloAction">

<!--

result标签   配置请求处理后页面跳转(result可以有多个)

name属性       Action返回字符串(默认:success)

标签主体部分    配置资源文件(jsp);根据不同的name属性值返回到对应的jsp页面

-->

<result name="success">/index.jsp</result>

</action>

</package>

 

<package name="userpack" extends="struts-default" namespace="/">

<!--

   method属性    配置处理请求方法名称  (默认:execute)

    其值要与对应的类名中的方法名一样

-->

<action name="login" class="com.web.action.UserAction" method="login">

<result>/success.jsp</result>

<result name="login">/login.jsp</result>

</action>

<action name="reg" class="com.web.action.UserAction" method="reg">

<result>/login.jsp</result>

</action>

</package>

 

<package name="mypack" extends="struts-default" namespace="/">

<action name="hello" class="com.web.action.HelloAction">

<!--  

type属性   设置控制跳转模式

  dispatcher转发到其他资源文件(jsp)

  chain转发到其他Action

  redirect重定向到其他资源文件(jsp)

  redirectAction重定向到其他Action

-->

<result type="redirectAction">list</result>

</action>

<action name="list" class="com.web.action.HelloAction" method="list">

<result >/index.jsp</result>

</action>

   <!-- 如果在地址栏中输入http://localhost:8080/struts03/hello,最后地址栏会跳转到http://localhost:8080/struts03/list.action-->

</package>

</struts>    

 

 

四、OGNL标签

字符串解析标签:

<s:generator separator="," val="'11111,22222,333333'">

     <s:iterator>

     <s:property/><br/>

     </s:iterator>

    </s:generator>

    

    <c:forTokens items="aaaa,bbbb,cccc" delims="," var="s">

     ${s }<br/>

    </c:forTokens>

 

动作标签:

<s:action name="list" namespace="/" executeResult="true"></s:action>

 executeResult="true"必须为true

五、配置拦截器

<struts>

<!-- 使用国际化配置此内容 -->

<constant name="struts.custom.i18n.resources" value="res"></constant>

<package name="testpack" extends="struts-default" namespace="/">

<!-- 定义一组拦截器 -->

<interceptors>

<!--  

interceptor标签    配置拦截器(可以有多个)

name属性      拦截器的名称(随便写)

class属性    拦截器的类名称

-->

<interceptor name=”iner1” class="com.web.interceptor.MyInterceptor1"></interceptor>

<interceptor name=”iner2” class="com.web.interceptor.MyInterceptor2"></interceptor>

<!--

interceptor-stack标签   定义拦截器栈

name属性   随便写

-->

<interceptor-stack name="mystack">

<!-- 指定拦截器栈中的拦截器 -->

<interceptor-ref name="inter1"></interceptor-ref>

<interceptor-ref name="inter2"></interceptor-ref>

</interceptor-stack>

</interceptors>

<action name="test" class="com.web.action.TestAction">

<result>/index.jsp</result>

<!-- 如果一旦编写自定义拦截器,默认的拦截器需要显示的编写-->

<interceptor-ref name="defaultStack"></interceptor-ref>

<!-- action添加指定拦截器-->

<!--  

<interceptor-ref name="inter1"></interceptor-ref>

<interceptor-ref name="inter2"></interceptor-ref>

-->

<!-- action添加执行拦截器栈-->

<interceptor-ref name="mystack"></interceptor-ref>

</action>

<action name="add" class="com.web.action.AddAction">

<result>/index.jsp</result>

<!-- 配置如果拦截到重复提交的错误时跳转页面 -->

<result name="invalid.token">/add.jsp</result>

<!-- 配置防止重复提交的拦截器 -->

<interceptor-ref name="token"></interceptor-ref>

<!-- 自带默认拦截器 -->

<interceptor-ref name="defaultStack"></interceptor-ref>

<!-- 显示action执行时间,用于性能瓶颈测试-->

<interceptor-ref name="timer"></interceptor-ref>

</action>

</package>

</struts>   

 

改善输出界面:

配置资源文件

六、Spring

6.1spring模块

1)Spring核心模块(Spring Core)

Spring的核心容器模块,它提供IOC的支持。该模块中包含BeanFactory,它采用工厂模式来实现IOC,负责对bean的生命周期的管理。

2)Application Context(上下文模块)

该模块扩展了BeanFactory的功能,例如提供了i18n,系统生命周期以及验证的支持SpringAOP模块

该模块为应用系统的AOP开发提供了支持。

3)JDBCDAO模块

提供了JDBC封装的模板代码,使得使用JDBC开发更加简洁。

4)ORM映射模块

该模块提供了对许多流行的ORM框架的支持,其中包括Hibernate,JDOiBATIS SQL的支持Spring Web模块

该模块中Spring提供了对其它的WEB框架的支持,包知StrutsJSFWEBWORK

5)Spring MVC框架

Spring提供的用于开发WEB应用的MVC框架

6.2spring核心应用

IOC(控制反转)

程序中各个组件之间的关系,不由程序代码直接操控,而由容器控制。控制权由应用代码中转到了外部容器,即所谓的反转。(把自己new的东西改为由容器提供)

更通俗的名称:DI(依赖注入)

各个组件之间的依赖关系不是在程序中写死,而是写在外部的配置文件中,然后运行时通过容器动态注入。

Spring核心容器提供了IOC的具体实现,所有的其它模块都是建立在它的基础之上。

 

6.3自己总结

每次新增一个功能需要在com.web.dao.impl下新增一个类去实现接口(UserDAO.java),在配置文件中添加<bean name="userDAOImpl4"class="com.web.dao.impl.UserDAOImpl4"></bean>

并更改<property name="userDAO" ref="userDAOImpl4"></property>ref的属性值



----------

后续将不断更新

 

 

 

 

 

 

 


原创粉丝点击