首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

strus2使用

2012-07-15 
strus2应用??Struts2大致原理:页面---动作---struts.xml---动作处理类---跳转页面;表单,Action,配置文件;

strus2应用

?

?

Struts2大致原理:

页面---动作---struts.xml---动作处理类---跳转页面;

表单,Action,配置文件;

实体类传递页面数据;(ognl)

Validate()简单验证;

动作处理类,结果,跳转页面;

?

Struts2的其它配置文件中:

<package?name="loginOpra"?namespace="/WebsiteBackstage"?extends="struts-default">

Namespace?struts2命名空间,默认为当前空间

最好用模块命名,

http://localhost:8080/sshWeb/WebsiteBackstage/login.jsp?

命名为/WebsiteBackstage;

?

Action实现类:

使用继承ActionSupport的写法;

?

Action执行的时候并不一定要执行execute方法,我们可以指定Action执行哪个方法:

可以在配置文件中配置Action的时候用method=来指定执行哪个方法

<action?name="userAdd"?class="com.bjsxt.struts2.user.action.UserAction"?method="add">

????????????<result>/user_add_success.jsp</result>

</action>

????这样,只要在action的对象中有一个add的方法,并且返回类型为String就可以了。如果没有method属性,则默认执行execute()方法。

import?com.opensymphony.xwork2.ActionSupport;

public?class?UserAction?extends?ActionSupport?{

????public?String?add()?{

???????return?SUCCESS;

????}??

}

?

登录验证提示:

动作实现类方法中:

this.addFieldError("userError",?"用户名或密码错误,请检查!");

?

<s:fielderror?fieldName="userError"?theme="simple"/>?

<s:fielderror>标签:获取使用addFieldError()方法添加的信息。

???????????????????FiledName:指定信息的名称。

???????????????????Theme:?指定显示的主题。

?注:使用此标签获取的错误信息,Struts强制添加了css的修饰。生成的HTML代码如下(不长用):

<ul?style="text-indent: 18pt; margin-bottom: 0pt; margin-top: 0pt; line-height: 19.5pt; padding: 0pt;">???????????????<li><span>name?is?error</span></li>

???????????????<li><span>name?is?too?long</span></li>

?????</ul>

Class=”errorMessage”是Struts2已经设置好的一个css了。这个方式不方便我们自定义样式。

另,非空的验证:

两种方式,上面的一种,validate的一种,

非空,错误验证,都要搭配action配置文件中的

<result?name="input">/WebsiteBackstage/login.jsp</result>;

?

列表页面数据绑定;

类:

List<Admin>?list?=??adminDao.getAll();

ActionContext.getContext().put("admins",?list);

页面:

<s:iterator?value="admins"?status="itStatus">

??<li>

??<s:property?value="#itStatus.count"?/>

??<s:property?value="name"/>

??<s:property?value="pwd"/>

??</li>

</s:iterator>

?

重定向错误:---1个action有重定向错误,分成两个就好了。

<action?name="admin_*"?class="service.AdminService"??method="{1}">

???<result?name="success"?type="redirect">admin_list2.action</result>

???<result?name="update"?>/WebsiteBackstage/sysMana/admin_update.jsp</result>

???<result?name="input">/WebsiteBackstage/sysMana/admin_add.jsp</result>

??</action>

??<action?name="admin_list2"?class="service.AdminService"?method="list">

<result?name="success">/WebsiteBackstage/sysMana/admin_list.jsp</result>

</action>

?

动作带id的简单写法:

<a?href="admin_delete?id=<s:property?value='id'/>">删除</a>?

复杂的:

?<s:url?action="admin_delete"?id="myUrl">

???????<s:param?name="id"?value="id"/>

????</s:url>

????????<a?href='<s:property?value="#myUrl"?/>'>删除</a>

?

页面路径:

使用绝对路径;

<%

String?path?=?request.getContextPath();??//项目文件名;

String?basePath?=?request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";???//http路径;

%>

---获取到http://localhost:8080/sshWeb/到这里的路径;?

页面使用方式两种:

1),<a?href="<%=basePath%>WebsiteBackstage/sysMana/admin_add.jsp">添加管理员</a>---单个超链中补全使用。

2),在head中加<base?href="<%=basePath%>">?,所有超链默认加载前缀;

?

<s:date?format="yyyy-MM-dd"????name="date"?/>

?

全选删除:

页面checkbox:

<s:form?id="adminForm"?action="admin_deleteMore"??method="post"?enctype="multipart/form-data">??

????????全选:<input?type="checkbox"?name="allselect"?id="allselect"?onclick="check()"/>

????????<input?type="submit"?name="submit"?value="批量删除"?onclick="return?confirm('确定删除该?')?true:false;"?/>

???<s:iterator?value="admins"?status="itStatus">

??<li>

??<s:property?value="#itStatus.count"?/>

??<s:property?value="name"/>

??<s:property?value="pwd"/>

??<s:url?action="admin_goUpdate"?id="myUrl">

???????<s:param?name="id"?value="id"/>

????</s:url>

????????<a?href='<s:property?value="#myUrl"?/>'>修改?</a>

???????????

????????<a?href="admin_delete?id=<s:property?value='id'/>"???onclick="return?confirm('确定删除?');">删除</a>

????????<input?type="checkbox"?name="chkbox"?id="chkbox"?value='<s:property?value="id"/>'?/>??

??</li>

</s:iterator>

</s:form>?

Js全选:

<script?type="text/javascript">??

????function?check()?{??

????????var?confirmBox?=?document.getElementById("allselect");//??

????????if?(confirmBox.checked)?{??

????????????var?arryObj?=?document.getElementsByName("chkbox");??

????????????for?(?var?i?=?0;?i?<?arryObj.length;?i++)?{??

????????????????if?(typeof?arryObj[i].type?!=?"undefined"??

????????????????????????&&?arryObj[i].type?==?'checkbox')??

????????????????arryObj[i].checked?=?true;?

????????????}??

????????}?else?{??

????????????var?arryObj?=?document.getElementsByName("chkbox")??

????????????for?(?var?i?=?0;?i?<?arryObj.length;?i++)?{??

??

????????????????if?(typeof?arryObj[i].type?!=?"undefined"??

????????????????????????&&?arryObj[i].type?==?'checkbox')??

????????????????????arryObj[i].checked?=?false;??

????????????}??

????????}??

????}

</script>?

实现类:

//多选删除|?数组获取;循环删除;

?public?String?deleteMore()?throws?Exception{??

?DaoDemoUtils.buildJndi();

?ApplicationContext?ac?=?new?ClassPathXmlApplicationContext("/dao/datasource-context-dao.xml");

?AdminDAO?adminDao?=?(AdminDAO)?ac.getBean("AdminDao");

?HttpServletRequest?request=ServletActionContext.getRequest();??

?String[]?ids?=?request.getParameterValues("chkbox");

?

?for(int?i?=?0;?i?<?ids.length;?i++)

?{

?Long?id?=?Long.parseLong(ids[i].toString());

?adminDao.delete(id);

?}

?return?"success";??

?}??

?

编辑器:

见编辑器的实现文档;

?

修改页面编辑器不现实;

---路径不对,使用绝对路径。

?

jquery输入验证:

见jquery输入验证的文档。

?

?

添加:

private?DownloadFile?downloadFile;

public?DownloadFile?getDownloadFile()?{

return?downloadFile;

}

public?void?setDownloadFile(DownloadFile?downloadFile)?{

this.downloadFile?=?downloadFile;

}

---其中,downloadFile必须是DownloadFile这个的首字母小写,否则出错。

?

?

上传下载:

文件路径;

文件大小;

下载次数;

添加时间;

软件性质;状态;---单选按钮组;

?

?

集合组件:---给定集合选项。

1),最简单的静态写法:

添加页面,

<s:radio?list="#{'0':'正常','1':'结束'}"?name="downfile.state"?value="0"?label="状态"/>

修改页面,

<s:radio?list="#{'0':'正常','1':'结束'}"?name="downloadFile.state"??label="状态"/>????//struts2会自动绑定value对应的值;

2),简单动态的写法:

实体类;无数据表;

?

?

列表页面,显示值对应的汉字;

?

?

///////////////////////////////////////////////////////////////////////////////////////////////////

?

页面数据操作:

1,表单页面数据获取;---登录页面,已解决。

添加;---管理员添加;

列表页面数据绑定;---管理员列表页面;

删除;---管理员删除;

修改;---管理员修改;

全选删除;---管理员批量删除;

添加内容的编辑器;---关于我们添加、修改页面;

热点排行