您的位置:首页 > 其它

三大框架整合有很多种我只说一种

2010-03-29 22:16 274 查看
==================== 开发环境 ====================
1. Eclipse + Aptana + SpringIde + mysql + tomcat

==================== 搭建 ssh 环境 ====================
1. 加入 struts.
1). 导入 jar 包: struts-1.3.8/apps/struts-blank-1.3.8/WEB-INF/lib/*.jar, 额外导入 struts-1.3.8/lib/struts-extras-1.3.8.jar 包
2). 加入 struts-config.xml, validator.xml 配置文件到 conf 目录下.
3). 复制 struts-1.3.8/apps/struts-blank-1.3.8/WEB-INF/classes/MessageResources.properties 到 conf 目录下
4). 在 web.xml 文件中加入如下内容:

<!-- Standard Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/classes/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

2. 加入 spring:
1). 导入 jar 包:
--> spring-framework-2.5.6.SEC01/dist/spring.jar: 核心
--> spring-framework-2.5.6.SEC01/dist/modules/spring-webmvc-struts.jar: 集成 struts
--> spring-framework-2.5.6.SEC01/lib/aspectj/*.jar: 基于接口面向切面
--> spring-framework-2.5.6.SEC01/lib/cglib/*.jar: 没有接口面向切面
--> spring-framework-2.5.6.SEC01/lib/jakarta-commons/commons-logging.jar: 日志
--> ******: spring-framework-2.5.6.SEC01/lib/jakarta-commons/commons-logging.jar 和 struts 导入的 commons-logging-1.0.4.jar 冲突,
删除版本较低的 -- commons-logging-1.0.4.jar.

2). 加入 spring 的配置文件: 在 conf 目录下新建 applicationContext.xml 文件.
3). 在 web.xml 文件中加入如下内容:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext*.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

4). spring 集成 struts, 在 struts-config.xml 文件中添加如下内容:
<controller>
<set-property property="processorClass"
value="org.springframework.web.struts.DelegatingRequestProcessor"/>
</controller>

3. 加入 hibernate:
1). 导入 jar 包:
--> hibernate-distribution-3.3.2.GA/lib/required/*.jar
--> /hibernate-distribution-3.3.2.GA/hibernate3.jar
--> slf4j-1.5.8/slf4j-nop-1.5.8.jar
--> ******: struts 导入的 antlr-2.7.2.jar 和 hibernate 导入的antlr-2.7.6.jar 冲突,
删除版本较低的 -- antlr-2.7.2.jar

2). spring 集成 hibernate
①. 创建 applicationContext-hibernate.xml 配置文件. 在该配置文件中需要完成如下配置: 配置数据库连接池; 配置 hibernate; 配置 spring 的声明式事务

②. 配置数据库连接池:
--> 导入 jar 包: c3p0-0.9.1.2/lib/c3p0-0.9.1.2.jar, mysql-connector-java-5.1.7/mysql-connector-java-5.1.7-bin.jar
--> 把数据库连接池的基本信息(user, password, url, driver) 和 hibernate 的基本信息(dialect) 外置到一个属性文件中: applicationContext.properties

4. 在 web.xml 中加入 spring 提供的字符编码过滤器: 使用 org.springframework.web.filter.CharacterEncodingFilter 类.

==================== 登录 ====================
1. 把 jsp 放置到 WEB-INF/pages/ 目录下
2. struts 前端开发的两个基本原则:
1). 尽可能的在一个模块使用一个 ActionForm 类. 因为服务器端的简单验证需要使用 struts 的 validator 验证框架, 所以需要使用
org.apache.struts.validator.ValidatorForm 作为 form 的父类
2). Action 的父类选用 org.apache.struts.actions.MappingDispatchAction. 若选用 org.apache.struts.actions.DispatchAction, 则多个请求只能对应一个
action 节点, 这也意味着 多个请求只能使用一个 ActionForm, 进而多个请求只能使用一种验证规则, 但这在很多时候不能满足实际需要. 例如: 注册时要求 email
不能为空, 但在登录时不需要使用 email 字段

3. 登录要求:
1). 前台验证
①: loginname 和 loginpassword 字段除去前后空格不能为空
②: loginname 和 loginpassword 字段除去前后空格, 不能少于 6 个字符
③: loginname 中不能包含特殊字符, 即以字母开头, 后边还可以包含数字和_

解决方案:
①. 因为前两条要求对于 loginname 字段和 loginpassword 字段时一样的, 所以一起完成
②. 第三条验证只针对于 loginname, 所以可以单独完成, 需要使用正则表达式: var reg = /^[a-zA-Z]/w+/w$/ig;

2). 服务器端的简单验证, 由 struts 的 validator 框架完成, 要求同 1)
使用 struts 的 validator 框架验证时, validator 框架不能自动的去除字段的前后空格. 解决方案:
①. 在要验证的字段的 set 方法中手工去除空格
public void setLoginpassword(String loginpassword) {
if(loginpassword != null)
loginpassword = loginpassword.trim();
this.loginpassword = loginpassword;
}

②. 修改 struts validator 框架的源代码: 在本地提供 FieldChecks 类, 修改 validateMinLength 方法.
③. 在页面上实现 loginname, loginpassword 错误提示的分开显示, 可以通过 打印
request.getAttribute("org.apache.struts.action.ERROR")
得知 validator 框架在 ActionMessages 中的错误信息的 key 为当前字段的名字

3). 若上述两种验证都通过, 则请求到达 Action 的 execute 方法, 查询数据库, 匹配用户的输入信息, 返回页面
①: 用户名不存在, 提示信息为: "用户名不存在"
②: 用户名存在, 但用户名和密码不匹配, 提示信息为: "用户名和密码不匹配"
③: 匹配, 返回请求页面

解决方案: 使用 struts 提供的声明式异常处理机制完成页面的转发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: