STRUTS2实验报告

合集下载

Struts2漏洞测试书面报告

Struts2漏洞测试书面报告

Struts2漏洞测试书⾯报告Struts2 漏洞测试报告信息化建设处2016年6⽉15⽇Struts2 漏洞测试报告0.前期⼯作准备前期的⼯作主要围绕以下⼏个⽅⾯进⾏:分析从2014年以来Struts2官⽅所披露的⼏个⾼危/重要漏洞的版本号、形成的原因、影响的范围以及修复的建议。

了解乌云知识库⾥对相关漏洞原理的分析对学校218和216⽹段的所有开启“Apache Tomcat/Coyote JSP”服务的IP进⾏扫描,并根据服务器所属的业务,对⽬标IP进⾏分类处理。

0.1Struts2重要漏洞的类型纵观2014年以来Struts2官⽅所披露的各种漏洞,归纳起来,主要有3种类型:“classLoader导致特定环境下的DOS漏洞”、“开启DMI导致的远程代码执⾏漏洞”和“使⽤REST插件导致的远程代码执⾏漏洞”。

本次测试根据此3种类型,选取具有代表性的⼏个重要漏洞进⾏分析。

S2-037[1]:2016年6⽉16⽇,乌云漏洞报告平台,报告了⼀份最新的S2-037漏洞(官⽅⽹站仍未正式更新)。

主要原因是使⽤REST插件导致的远程代码执⾏漏洞,受影响的版本号为2.3.20-2.3.28.1。

S2-032[2]:2016年4⽉21⽇Struts2官⽅发布S2-032漏洞,评级为⾼。

主要原因是在开启动态⽅法调⽤(Dynamic Method Invocation,DMI)的情况下,会被攻击者实现远程代码执⾏攻击,受影响的版本号为2.3.18-2.3.28 ( 2.3.20.2和2.3.24.2除外)。

S2-021/S2-020[3][4]:2014年左右频繁爆发的漏洞类型主要是“classLoader导致特定环境下的DOS漏洞”,受影响的版本号为2.0.0 - 2.3.16.1。

0.2Nmap扫描结果与分类在分析测试之前,由于没有218和216段服务器的相关资料,为了避免盲⽬地进⾏测试,因此,选⽤nmap⼯具,对218和216段(⼀共512个IP)进⾏扫描,从⽽得到所有开启“Apache Tomcat/Coyote JSP”服务的IP地址。

实验六 Struts2 的开发应用

实验六  Struts2 的开发应用

实验六Struts2 的开发应用网络11-2班3110757214 陈宇鹏一、实验目的理解MVC设计模式的基本概念和Java Web开发的两种模式Model1和Model2,以及Struts开发工作流程和基本应用。

二、实验要求1.掌握Struts2.0的开发环境的建立。

2.理解Struts的框架原理。

3.掌握Struts的工作流程。

4.掌握Struts2.0的基本应用。

三、实验内容(一)Struts2的文件上传1.文件上传页面,其中包含两个表单域:文件标题和文件浏览域♦程序功能:上传页面,包含两个表单域。

♦程序源码:upload.html<html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=GBK" /><title>简单的文件上传</title></head><body><form action="upload.action" method="post" enctype="multipart/form-data">文件标题:<input type="text" name="title" /><br>选择文件:<input type="file" name="upload" /><br><input value="上传" type="submit" /></form></body></html>2.处理上传请求的Action类程序源码:UploadAction.javapublic class UploadAction extends ActionSupport{private String title;private File upload;private String uploadContentType;private String uploadFileName;//接受依赖注入的属性private String savePath;//接受依赖注入的方法public void setSavePath(String value){this.savePath = value;}private String getSavePath() throws Exception{return ServletActionContext.getRequest().getRealPath(savePath);}public void setTitle(String title) {this.title = title;}public void setUpload(File upload) {this.upload = upload;}public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType;}public void setUploadFileName(String uploadFileName) {this.uploadFileName = uploadFileName;}public String getTitle() {return (this.title);}public File getUpload() {return (this.upload);}public String getUploadContentType() {return (this.uploadContentType);}public String getUploadFileName() {return (this.uploadFileName);}@Overridepublic String execute() throws Exception{System.out.println("开始上传单个文件-----------------------");System.out.println(getSavePath());System.out.println("==========" + getUploadFileName());System.out.println("==========" + getUploadContentType());System.out.println("==========" + getUpload());//以服务器的文件保存地址和原文件名建立上传文件输出流FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + getUploadFileName());FileInputStream fis = new FileInputStream(getUpload());byte[] buffer = new byte[1024];int len = 0;while ((len = fis.read(buffer)) > 0){fos.write(buffer , 0 , len);}return SUCCESS;}}1.配置文件上传的Action程序源码:Struts.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><constant name="struts.custom.i18n.resources" value="globalMessages"/><constant name="struts.i18n.encoding" value="GBK"/><package name="lee" extends="struts-default"><action name="upload" class="lee.UploadAction"><param name="savePath">/upload</param> <result>/succ.jsp</result></action></package></struts>.部署并浏览该页面。

java基于Struts2的留言板程序

java基于Struts2的留言板程序

实验报告课程名称基于Struts2的留言板程序实验名称JSP编程实验类型设计型实验地点计算机楼304机房实验日期2011年5月10日9~12节指导教师李文超专业计算机科学与技术班级0802学号0811010209姓名李鑫成绩辽宁石油化工大学计算机与通信工程学院一.实验目的:1.掌握Struts2配置2.掌握Struts2标签库的使用;3.掌握Action编写二.实验内容:编写一个小型留言板程序1.实现留言功能;2.查看用户留言;3.利用Struts2验证框架为注册和登录页面增加验证功能。

完成JSP页面及相应的JA VA代码。

数据库结构(仅供参考):(id,message,author,postTime)三.实验环境:JDK1.6/Tomcat 6.0.29/myeclipse6.5/MySQL5.5四.报告要求1.给出数据库表结构2.给出JSP页面和JA VA主要代码3.实验结果(页面抓图)4.实验总结五、实验方案:1.建立用户数据库,和一个user表内容包括(username,password)插入一个用户建立留言版的信息表:create table message(id varchar(30),message varchar(200),author varchar(50),posttime timestamp(6))2.连接数据库3.布置JSP界面4.针对每一个功能点,编写一个action类。

编写相关的结果页面。

针对action返回的结果代码,编写相应的结果页面。

5.利用Struts2验证框架为注册和登录页面增加验证功能。

6.进行测试,调试程序六、实验代码:package login.sql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class BaseDao {public final static String DRIVER = "oracle.jdbc.driver.OracleDriver";public final static String URL= "jdbc:oracle:thin:@127.0.0.1:1521:myoracle";public final static String DBNAME = "scott";public final static String DBPASS = "123456";public static Connection getConnect() throws ClassNotFoundException, SQLException {Class.forName(DRIVER);return DriverManager.getConnection(URL, DBNAME, DBPASS);}public static void closeAll( Connection conn, PreparedStatement pstmt, ResultSet rs ) {if(rs != null){try { rs.close();} catch (SQLException e) {e.printStackTrace();}}if(pstmt != null){try { pstmt.close();} catch (SQLException e) {e.printStackTrace();} }if(conn != null){try { conn.close();} catch (SQLException e) {e.printStackTrace();} }}public static int executeSQL(String preparedSql,String[] param) {Connection conn = null;PreparedStatement pstmt = null;int num = 0;try {conn = getConnect(); pstmt = conn.prepareStatement(preparedSql);if( param != null ) {for( int i = 0; i < param.length; i++ ) {pstmt.setString(i+1, param[i]); }}num = pstmt.executeUpdate(); } catch (ClassNotFoundException e) {e.printStackTrace(); } catch (SQLException e) {e.printStackTrace(); } finally {closeAll(conn,pstmt,null);}return num;}}package login.bean;public class User {private String userName;private String password;public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}package login.action;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.Map;import er;import login.sql.*;import org.apache.struts2.interceptor.RequestAware;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport implements SessionAware,RequestAware{private User user;private int id;//method 2private Map session;private Map request;private Connection con;private PreparedStatement pstmt;private ResultSet rs;public Map getRequest() {return request;}public void setRequest(Map request) {this.request = request;}public Map getSession() {return session;}public void setSession(Map session) {this.session = session;}public int getId() {return id;}public void setId(int id) {this.id = id;}public User getUser() {return user;}public void setUser(User user) {er = user;}public String execute() throws Exception {if(null==user)return INPUT;String sql="select count(*)from users where userName=? and password=?";pstmt=BaseDao.getConnect().prepareStatement(sql);pstmt.setString(1, user.getUserName());pstmt.setString(2,user.getPassword());rs=pstmt.executeQuery();if(rs.next()){session.put("user", user);return SUCCESS;}elsereturn INPUT;}}JSP代码:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Login</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form name="loginForm" action="login.action?id=123" method="post"><div align="center"><br>用户名:<input type="text" name="erName"><br></div><div align="center"><br>密码:<input type="password" name="user.password"><br><input type="submit" value=" 登录 "></div></form></body></html><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>index</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>Welcome to jsp. <br><br>用户名:<s:property value="erName"/><br/>密码:<s:property value="user.password"/></body></html>七.实验结果:注册验证:八.实验总结本次是实验主要在java中使用jsp编程来制作一个简单的登录界面,利用jsp来实现动态网站的制作。

Struts2实践总结

Struts2实践总结

Struts2中的属性驱动和模型驱动Struts2中的属性驱动和模型驱动2Struts2中的异常处理机制ognl表达式Struts2中文件的上传和下载拦截器Struts2中的输入校验Struts2中的类型转换使用Annotation取代struts.xml配置Struts2中文乱码处理Struts2常用标签UI标签的主题设置Struts2与AJAX交互◆驾驭XML数据◆驾驭JSON数据第一个Struts2程序当我们在一个新的工作空间中创建一个Web项目的时候首先要将我们自己的Tomcat绑定到MyEclipse中。

接下来我们可以使用自己安装的JDK,Windows→Preferences→输入Installed JREs建一个Web Project拷struts.xml(可从下载的struts目录下的示例中拷)。

将<struts>标签下的内容都注释掉,这样自己写的时候可供参考。

拷struts2所需要的lib,直接从示例中拷,只需要8个(首字母以c、c、c、f、j、o、s、x 开头,其中的javaassist包一定不能少)查看项目目录在磁盘上的结构:Window→Show View→Navigator在web.xml文件中配置Struts2的核心控制器(直接从示例中拷)下面我们修改struts.xml文件,添加以下配置:<package name="default" namespace="/" extends="struts-default"><action name="hello"><result>/Hello.jsp</result></action></package>我们将原来的index.jsp改名为Hello.jsp,打开该JSP文件(使用MyEclipse JSP Editor打开,不要使用默认的图形编辑器打开,这样速度很慢),适量修改一下页面信息。

实验六 Struts2 Action实验(一)

实验六 Struts2 Action实验(一)

实验六 Struts2 Action实验(一)
一、实验目的:
熟悉Struts2 Action类的基本用法,掌握Struts2 Action类在MVC程序开发中的编写和应用,初步实现CRUD编程。

二、实验内容:
在MyEclipse环境下运用Struts2技术改写实验四内容,完成相应的数据库CRUD功能,调试运行程序。

三、实验要求:
1. 掌握运用Struts2 开发MVC程序的基本步骤;
2. 掌握Struts2 Action接收请求参数、调用业务逻辑、封装结果数据并转向结果页面的
用法
3. 掌握在struts.xml文件中对Struts2 Action的基本配置;
4. 运用相关技术(Struts2以及JDBC等)完成规定功能;
5. 写出实验报告。

四、实验学时:2学时
五、实验步骤:
1.进入MyEclipse环境,新建一个Web Project;
2. 设计一个数据库,包括出版社表和书籍表,出版社表字段包括序号(自增主键)、出版
社编码和出版社名称,书籍表字段包括序号(自增主键)、书号、书名、作者、价格和出版社;
3. 采用Struts2技术完成出版社基本信息管理模块的主要功能,包括:
3.1 设计封装了出版社表信息的JavaBean;
3.2 设计封装了针对出版社表信息进行CRUD操作的工具JavaBean(DAO类);
3.3 设计并开发页面
3.4 设计并开发Action控制器
3.5. 完成显示所有出版社信息的功能;
3.6. 完成对出版社信息的增加功能;
4. 调试运行程序。

六、选作实验
1. 完成对出版社信息的条件查询功能;
2. 完成对出版社信息的修改和删除功能。

网络工程网络编程实验报告7-struts2程序

网络工程网络编程实验报告7-struts2程序

《J2EE程序设计与应用开发》实验报告实验序号:07 实验项目名称:struts2程序学号姓名专业、班20网络工程实验地点指导教师实验时间2022一、实验目的及要求1、利用Struts编写用户登录。

二、实验设备(环境)及要求一台Windows XP、JDK1.6、MyEclipse 8.5三、实验内容与步骤四、实验结果与数据处理1、输入相同的账号和密码2、输入不同的账号和密码附源程序清单:1、Login.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%><html><body><form action="/prj14/login.action" method="post">请您输入账号:<input name="account" type="text"><br>请您输入密码:<input name="password" type="password"><br><input type="submit" value="登录"></form></body></html>2、LoginSuccess.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%><html><body>登录成功</body></html>3、LoginFail.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%><html><body>登录失败</body></html>LoginActionpackage prj14;public class LoginAction {private String account;public String getAccount(){return account;}public void setAccount(String account){this.account=account;}private String password;public String getPassword(){return password;}public void setPassword(String password){this.password = password;}public String execute() throws Exception{if(account.equals(password)){return "success";}return "fail";}}6、struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "/dtds/struts-2.1.dtd"><struts><package name="struts2" extends="struts-default"><action name="login" class="prj14.LoginAction"><result name="success">/loginSuccess.jsp</result><result name="fail">/loginFail.jsp</result></action></package></struts>。

Struts2全部实验报告

Struts2全部实验报告

实验时间2015年11月6日19:00时至22:00时学时数 4 1.实验名称实验一:熟悉Struts2核心文件2.实验目的(1)熟悉Struts2的配置文件web.xml和struts.xml。

(2)熟悉如何书写用户定义的控制器。

(3)深刻理解DMI和通配符的使用。

(4)学会struts2接收参数的方法。

3.实验内容(1)将如下页面中登陆和注册的action配置用通配符实现。

(2)理解局部结果和全局结果,学会在struts.xml 中配置全局结果。

(3)实现增加书籍信息的业务处理。

(4)修改管理员登陆后的页面并新写页面addBook.jsp,使得点击添加书籍信息后呈现下面的页面4.实验原理或流程图要求:➢管理员登录后跳到管理员登陆成功的页面➢普通用户登录后跳到普通用户登陆成功的页面➢注册后跳到注册成功的页面➢登录时用户名密码输入错跳到出错页➢注册和登录时用户名,密码没有输入时跳到登陆注册页,并在登陆注册页上显示校验失败的相关提示。

要求如下:➢当输入书名,作者和定价后,要求使用属性驱动、模型驱动或今天新学的接收参数的方法进行参数接收。

➢使用集合模拟数据库。

➢理解chain结果类型,使得增加书籍后马上能将新增书籍的信息显示出来。

呈现出如下的页面:(注意:此处需要学会读取struts2中ValueStack中的内容)5.实验过程或源代码6.实验结论及心得通过本此实验,知道了Action配置采用通配符的方式该如何编写,也会了动态调用Action里面的方法,懂得了全局结果的配置,也会使用了接受参数的方法。

项目名称/login.jsp,查看运行结果。

(3)使用内置校验器进行校验项目3:用户注册验证。

步骤1:register.jsp文件步骤2:Register.java文件步骤3:新建 Register-register-validation.xml文件步骤4:struts.xml文件步骤5:运行程序,URL地址栏中输入http://主机名:端口名称/项目名称/register.jsp,查看运行结果。

实验4Struts2的个人信息管理系统项目实训

实验4Struts2的个人信息管理系统项目实训

封装了业务逻辑和数据访问代码,通过 DAO模式实现数据访问。
界面设计
01
02
03
界面风格
采用简洁、明了的界面风 格,使用统一的配色方案 和布局。
导航菜单
设计清晰的导航菜单,方 便用户快速找到所需功能。
输入表单
提供友好、易用的输入表 单,确保用户能够快速、 准确地输入数据。
数据库设计
数据库选择
采用MySQL数据库,确保数据的 安全性和可靠性。
安全加固
加强系统的安全性措施,如数据加密、 权限控制等,确保系统安全稳定运行。
06 项目总结与展望
项目总结
项目目标达成情况
个人信息管理系统的核心功能,如用户注册、登录、信息 查询、修改和删除等,均已实现。系统运行稳定,用户体 验良好。
团队协作与沟通
团队成员分工明确,沟通顺畅。通过定期的会议和讨论, 及时解决遇到的问题,确保项目进度按计划进行。
技术选型与实现
采用Struts2框架,实现了MVC设计模式,简化了代码结 构,提高了开发效率。同时,结合使用JDBC和SQL实现了 数据库操作。
项目收获与不足
技术能力提升
团队成员通过实践,加深了对 Struts2框架的理解和应用。
团队协作经验
成员间通过合作,提高了团队协 作和沟通能力。
项目收获与不足
项目范围
01
本项目主要涉及个人信息管理相 关的功能模块,不涉及其他复杂 业务逻辑和功能模块。
02
重点在于掌握Struts2框架在Web 应用开发中的应用,熟悉MVC设 计模式,了解Java Web开发的相 关技术和工具。
02 系统需求分析
用户角色分析
总结词
用户角色分析是系统需求分析的重要环节,需要明确系统中的不同用户角色及 其权限和功能需求。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 系统分析与设计 1.1 系统功能描述本系统是个非常简单的注册、登录系统。

本系统的实现是基于struts2、spring、hibernate三个框架,系统功能单一,业务逻辑简单。

当用户注册信用户时,就是向系统中增加一个新用户,对应的数据库增加一条记录。

当用户输入注册信息时,系统提供了基本的输入验证判断用户输入是否合法,只有当用户输入满足基本输入要求时,才会被提交到实际的登录系统,进行实际的登录处理。

系统还使用了随机产生的图形验证码来防止刷新,防止用户通过单击浏览器的书安心按钮来重复注册多个用户。

系统还提供了一种ajax方式来验证用户输入的注册名是否有效,系统要求所有的用户名不能重复。

故当用户输完用户名后,系统立即在页面上方提示用户该用户名是否可用,如果系统中没有该用户名,则系统提示该用户名可用;否则提示用户该用户名重复,用户必须重新选择用户名注册。

当用户注册一个新用户名之后,就可以使用系统的登录功能来登录系统了,用户输入登录用的用户名、密码后,系统一样提供了基本的输入校验。

除此之外,系统还采用了随机产生图形验证码来防止恶意用户的暴力破解,系统随机生成一个图形验证码,而用户登录必须输入图形验证码中显示的字符串,只有用户输入的字符串和系统随机生成的验证码字符相同时,系统才允许用户登录。

1.2 系统功能流程1.3 数据库设计相关的映射文件:&lt;hibernate-mappingpackage= &lt;classname=user table=user_table&gt; &lt;id name=idcolumn=user_id&gt; &lt;generatorclass=identity&lt;/id&gt; nique=true/&gt;&lt;propertyname==user_passnot-null=true length=50/&gt; &lt;propertyname=emaillength=100/&gt; &lt;/class&gt; &lt;propertyname=usercolumn=&lt;/hibernate-mapping&gt;一旦提供了上面的映射文件,hibernate就可以理解user和user_table之间的对应关系。

2.系统实现与测试 2.1 系统采用的关键技术mvc框架采用了struts2框架,struts2框架的易用性,极好的简化了系统的mvc层的实现;本系统使用了struts2的json插件来完成ajax功能,除此之外本系统为了避免进行底层的ajax交互,还是用了一个简单prototype.js函数库,用以简化ajax编程。

struts2框架的稳定性,为系统的稳定运行提供了保证。

spring容器作为系统的ioc容器,将系统中所有组件都放在spring容器中进行管理,并且充分利用了spring ioc容器的功能,采用依赖注入来管理系统中各组件的依赖关系,避免了各组件之间的硬编码耦合,提高了系统的可扩展性。

借助hibernate orm框架实现系统的持久化,通过hibernate的框架帮助,允许上层程序采用面向对象的方式编程,二hibernate负责把面向对象的持久化操作转换成jdbc操作,但hibernate的底层操作对开发者完全透明,从而让用户从具体的jdbc访问中释放出来,无需理会底层的jdbc数据库访问,而是以面向对象的方式进行持久化操作。

2.2 关键程序流程以注册为例说明:加载类(filterdispatcher)读取配置(struts配置文件中的regist.action) ? 派发请求(客户端发送请求)调用action(filterdispatcher从struts配置文件中读取与之相对应的action ) ?启用拦截器(webwork拦截器链自动对请求应用通用功能) ? 处理业务(回调registaction的execute()方法)返回响应(通过execute方法将信息返回到filterdispatcher)查找响应(filterdispatcher根据配置查找响应的是什么信息如:success、erroer,将跳转到哪个jsp页面) ? 响应用户(jsp---&gt;客户浏览器端显示)2.3 关键代码分析regist.action的execute方法publicstring execute() throws exception{ map session = actioncontext. ().getsession(); session.put(rand , null); string ver2 = (string )session.get(rand); if (mgr }returnreturn}else{if (vercode.equals(ver2)) { } else{ addactionerror(验证码不匹配,请重新输入); }returnfailure; } 业务逻辑层:publicint adduser(string user , string pass , string email) }publicvoidsave(user user){ gethibernatetemplate().save(user); } throws exception{ try{ user u = new user(); u.setuser(user); userdao returne.printstacktrace(); } catch thrownew exception(新增用户时出现异常); } sessionfactory是hibernate的持久化操作的基础对象,是整个数据库经过编辑后的内存镜像,通常对应一个底层数据库。

进行hibernate的持久化操作前,必须先完成sessionfactory的初始化。

本系统通过spring容器管理sessionfactory,从而允许开发人员无需手动管理hibernate的sessionfactory。

代码如下:&lt;beanid=sessionfactoryclass=org.springframework.orm.hibernate3.localsessionfactorybean&gt;&lt;propertyname=datasourceref=datasource/&gt;&lt;propertyname=mappingresources&gt; &lt;list&gt; &lt;value&gt;user.hbm.xml&lt;/value&gt;&lt;/list&gt; &lt;/property&gt; &lt;propertyname=hibernateproperties&gt; &lt;props&gt; &gt; &lt;propkey=show_sql&gt;true&lt;/prop&gt;&lt;propkey=hibernate.hbm2ddl.auto&gt;update&lt;/prop&gt; &lt;propkey=hibernate.dialect&gt; &lt;propkey=hibernate.jdbc.batch_size&gt;20&lt;/prop&gt; &lt;/props&gt;&lt;/property&gt; &lt;/bean&gt; dao组件是基于hibernate的持久化操作的,因此必须获得sessionfactory的引用才可以进行持久化操作。

由于系统的dao组件将由spring容器来管理,而且系统的sessionfactory也是由spring的容器来管理,因此dao组件无需显示去的sessionfactory的引用,而是接受spring容器注入即可。

配置如下:&lt;beanid=userdaoclass=org.reg_erdaohibernate &gt; &lt;propertyname=sessionfactoryref=sessionfactory/&gt; &lt;/bean&gt;配置业务逻辑组件所依赖的dao组件。

代码如下:&lt;beanid=mgrclass=org.reg_ermanagerimpl&gt;&lt;propertyname=userdaoref=userdao/&gt; &lt;/bean&gt;在spring容器中配置了业务逻辑组件后,还必须为业务逻辑方法增加事物控制。

因为用户的业务逻辑方法对应用户的一次业务请求,通常而言,用户的每次业务请求都是逻辑不可分的,一次应该为该方法增加事物控制。

本系统采用spring的beannameautoproxycreator后处理器完成。

代码如下:&lt;beanid=transactionmanagerclass=org.springframework.orm.hibernate3.hibernatet ransactionmanager&gt;&lt;propertyname=sessionfactoryref=sessionfactory/&gt; &lt;/bean&gt; &lt;beanid=transactioninterceptorclass=org.springframework.transactio n.interceptor.transactioninterceptor&gt; name=transactionmanagerref=&lt;propertyname= &lt;props&gt; &lt;propkey=get*&gt;propagation_required,readonly&lt;/prop&gt;&lt;propkey=*&gt;propagation_required&lt;/prop&gt; &lt;/props&gt;&lt;/property&gt;&lt;/bean&gt;&lt;beanclass=org.springframework.aop.framework.autoproxy.beannameautoproxycreator&gt;篇二:struts2 实验报告_01 篇三:struts2 实验报告实验报告实验课程:struts2框架应用开发院系(部):应用统计与理学系专业班级:数学与应用数学1301学号:1309401012姓名:田从从成绩:实验日期:一、实验名称:struts2开发环境的搭建二、实验目的:1、下载struts2框架;2、搭建struts2开发环境三、实验内容:1、下载最新版本的struts2;2、为web应用搭建struts2开发环境四、实验步骤:2、下载myeclipse,安装并配置在window下选择preferences,在java下选择installedjres,在它的右方选择add…,把jdk的路径添加进去,按finish完成。

相关文档
最新文档