Struts2和Oracle数据库交互的小Demo

栏目: Struts · 发布时间: 8年前

内容简介:写在前面:本次文章搭配以下两篇文章进行阅读,有助于理解。数据库表格:这里直接跳过链接数据库的DbUtil文件和Struts2的配置项。

写在前面:本次文章搭配以下两篇文章进行阅读,有助于理解。

正文

数据库表格:

Struts2和Oracle数据库交互的小Demo

这里直接跳过链接数据库的DbUtil文件和Struts2的配置项。

第一步:编写实体类

实体类:定义Student类所需要的数据,并设置set&get方法,构造方法,重写toString方法等
复制代码
Struts2和Oracle数据库交互的小Demo

第二步:编写接口类和工厂类

接口包括对student表的增删改查和查全部。工厂类用来获得具体操作实现类。
复制代码
Struts2和Oracle数据库交互的小Demo
Struts2和Oracle数据库交互的小Demo

第三步:实现接口(实现类),设计测试类

实现类是对第二步接口的实现,编写方法体,并对写好的方法进行测试
复制代码
Struts2和Oracle数据库交互的小Demo

第四步:配置login.xml用来完成对jsp页面和后台action的关联

在Struts.xml文件中写如下代码段来完成对login.xml的配置

<include file="login.xml"/>

login.xml用来处理用户的各种操作,并分发给Action对其进行处理,并且进行结果响应。这里就是Struts2的核心部分,用户的请求通过核心控制器发送到动作映射类,动作映射类再判断是否需要调用某个Action类,然后返回给核心控制器,核心控制器决定是否创建Action类的代理类,代理类创建后,确定使用哪个方法,然后返回确认执行信息,接着就是经过层层拦截器,执行某个Action类,然后根据结果返回具体的视图,最后经过层层拦截器封装响应给客户端

以下是login.xml的具体代码

<package name="default" namespace="/" extends="struts-default">
        <action name ="loginAction" class="com.huaruan.action.LoginAction">
        	<result name="success">Main.jsp</result>
        	<result name="input" type="redirect">Login.jsp</result>
        </action>
        <action name ="DbAction" class="com.huaruan.action.DbControlAction">
        	<result name="QuerryAll">QuerryAll.jsp</result>
        	<result name="QuerryByName">QuerryAll.jsp</result>
        	<result name="Delete">QuerryAll.jsp</result>
        	<result name="Update">ExecuteUpdate.jsp</result>
        	<result name="Insert">ExecuteUpdate.jsp</result>
        </action>
    </package>
复制代码

其中有两个Action,分别是loginAction和DbAction,分别完成对登录的控制和对数据库操作的控制(增伤改查)

result标签,根据返回字符串来完成对客户端的不同响应。

第五步:设计Login

界面如图

Struts2和Oracle数据库交互的小Demo
页面具体是一个form表单,表单动作映射到loginAction动作的Login方法,提交方式是post,表单包含一个文本框和一个密码框,一个提交按钮和一个重置按钮,分别使用Strus2的标签(s)来设计。

Action类的设计采用模型驱动(模型三)的方式来做

定义方法String Login() extends ActionSupport implements ModalDriven{} 用来判断用户的输入,根据结果返回不同的字符串,以便Login.xml进行响应。

核心代码如下:

public String Login() throws Exception {
		String str = null;
		String name= stu.getStuName();
		String pwd= stu.getStuPwd();
		StudentInter student= Factory.getStudent();
		Student s = student.SelectByname(name);
		System.out.println(s);
		if(s.getStuName()!=null) {
			if(s.getStuName().equals(name)&&s.getStuPwd().equals(pwd)) {
				str = SUCCESS;
			}else{
				str = INPUT;
			}
		}else {
			str = INPUT;
		}
		
		return str;
	}
复制代码

第六步:设计数据库交互

界面如图:

Struts2和Oracle数据库交互的小Demo

这里不做太多赘述,基本原理和login设计一样,细节部分略过。

详细介绍查询全部模块:

界面如图:

Struts2和Oracle数据库交互的小Demo
这里将数据显示在table控件中,使显示较为美观。这里获取数据的方式是Struts2的标签 <s:iterator value="list" status="st" var="student">

iterator标签。

iterator标签主要是用于迭代输出集合元素,如list set map 数组等,在使用标签的时候有三个属性值得我们关注

    1. value属性:可选的属性,value属性是指一个被迭代的集合,使用ognl表达式指定,如果为空的话默认就是ValueStack栈顶的集合.
  • 2.id属性:可选属性, 是指集合元素的id
  • 3.可以自定义变量(var XX)
  • 4.status属性:可选属性,该属性在迭代时会产生一个IteratorStatus对象,该对象可以判断当前元素的位置,包含了以下属性方法:
  • int getCount(); 迭代元素个数
  • int getIndex(); 迭代元素当前索引
  • boolean getFirst(); 是否为第一个
  • boolean getEven(); 是否为偶
  • boolean getLast(); 是否最后一个
  • bolean getOdd(); 是否为奇

然后看我们的代码,用来当个栗子:

<table border="1">
		<tr>
			<td>编号</td><td>学号</td><td>姓名</td><td>密码</td><td>性别</td><td>年龄</td><td>操作</td>
		</tr>
<s:iterator value="list" status="st" var="student">
	<tr>
	<td><s:property value="#st.getCount()"/></td>
	<td><s:property value="#student.stuId"/></td>
	<td><s:property value="#student.stuName"/></td>
	<td><s:property value="#student.stuPwd"/></td>
	<td><s:property value="#student.stuSex"/></td>
	<td><s:property value="#student.stuAge"/></td>
	<td><a href="DbAction!Delete?stuId=<s:property value="#student.stuId"/> ">删除</a></td>
	</tr>
</s:iterator>
</table>
复制代码

这里,list是Action给前台返回的封装数据(Student类型),var是定义的变量student,用来取出list中的对象属性值,status用来判断元素的位置。 最后一列我用来对本列进行删除操作,这里将其定义为标签,地址是转到对应的Action类中,同时携带参数stuId,用来标记删除该条信息。

Action类中的细节:

使用模式三和模式一结合的方式来进行值传递。 如图

Struts2和Oracle数据库交互的小Demo

各项参数的意义如下:

Struts2和Oracle数据库交互的小Demo

其中五个自定义方法,分别是:

  • Delete():用来完成删除操作
  • Insert():用来完成插入(新增)操作
  • SelectAll():用来完成查询全部操作
  • selectByName():用来完成根据姓名查询的操作
  • Update():用来完成更新操作(更改密码)

最后发布项目,测试运行。

如文中有笔误的地方,请留言告知,定会及时更正。谢谢。---Chuxus


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

XML Hacks

XML Hacks

Michael Fitzgerald / O'Reilly Media, Inc. / 2004-07-27 / USD 24.95

Developers and system administrators alike are uncovering the true power of XML, the Extensible Markup Language that enables data to be sent over the Internet from one computer platform to another or ......一起来看看 《XML Hacks》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具