Struts2和Oracle数据库交互的小Demo

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

内容简介:写在前面:本次文章搭配以下两篇文章进行阅读,有助于理解。数据库表格:这里直接跳过链接数据库的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


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

查看所有标签

猜你喜欢:

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

数学建模算法与应用

数学建模算法与应用

司守奎、孙玺菁 / 国防工业出版社 / 2011-8 / 49.00元

《数学建模算法与应用》主要内容简介:作者司守奎、孙玺菁根据多年数学建模竞赛辅导工作的经验编写《数学建模算法与应用》,涵盖了很多同类型书籍较少涉及的新算法和热点技术,主要内容包括时间序列、支持向量机、偏最小二乘面归分析、现代优化算法、数字图像处理、综合评价与决策方法、预测方法以及数学建模经典算法等内容。《数学建模算法与应用》系统全面,各章节相对独立。《数学建模算法与应用》所选案例具有代表性,注重从不......一起来看看 《数学建模算法与应用》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具