Struts2开发总结Word文档下载推荐.docx
《Struts2开发总结Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Struts2开发总结Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
sortnlist.action?
ct_id=<
propertyvalue="
ct_id"
/>
"
FONTCOLOR="
#FFFFFF"
ct_name"
/FONT>
/a>
/s:
iterator>
第四步:
在index.jsp中调用action为sort5list的方法
executeResult="
true"
id="
action>
3、Struts2超链接传参方式:
第一种:
newdetail2.action?
nid=<
nid"
/>
ntitle"
第二种:
urlid="
Newsquerynew"
action="
querynew.action"
paramname="
request_locale"
Newsquerynew<
param>
url>
%{Newsquerynew}"
最新文章<
a>
第三种:
newsAction.action"
直接使用即可<
注意:
Struts2超链接标签<
ahref=””>
中的href属性是必选参数,否则在项目整合中可能会出现不明的标签异常。
4、使用Struts2标签<
循环遍历结果集:
sort5newslist"
ntime"
其中内嵌html语言,<
除了value属性外,还有可选属性id="
"
,value属性是必选的
5、格式化日期显示方法
或者
,只需要改变
即可
%@pageimport="
java.text.SimpleDateFormat;
%>
Body体中引用:
%SimpleDateFormats=newSimpleDateFormat("
yyyy-MM-dd"
);
Datentime=newDate();
%>
%=s.format(ntime)%>
6、Struts2下拉菜单的使用
selectname="
ct_sid"
list="
ctypesonlist"
listKey="
listValue="
theme="
simple"
headerKey="
0"
headerValue="
一级栏目"
select>
ninvalidate"
#{1:
'
是'
2:
否'
}"
listKey="
key"
listValue="
value"
属性注解:
name是给Struts2<
标签取名字,这个也是提交到action并保存到对应的数据库中的字段名所必须得参数;
list是下拉选项数值;
listKey是选项列表所对应的id,listValue是选项列表每个字段的名称;
theme是自定义下拉框格式,headerkey是首选项的主键id,headerValue是首选项的字段名
7、Struts2.1.6使用日期控件:
需要导入包:
struts2-dojo-plugin-2.1.6.jar
%@tagliburi="
/struts-dojo-tags"
prefix="
sx"
在head体中加入:
sx:
head/>
在body体中引用:
datetimepickername="
ninvalidate_time"
type="
date"
displayFormat="
yyyy/MM/dd"
value="
%{'
today'
/sx:
datetimepicker>
name是给<
detetimepicker>
标签取名,type为date日期类型,displayFormat格式化显示日期,value是获取时间值,value="
是获取当前系统时间
8、Struts2中form提交表单格式
formaction="
login"
post"
validate="
form>
在form中加入theme="
属性,就不会受Struts2<
定义格式的影响
9、使用属性驱动取值
在action中将要输出的属性生成get和set方法,并将返回值定义为返回对象,如:
privateStringntitle;
//标题
privateStringncontent;
//内容
privateStringntime;
//时间
privateStringusername;
//发布人
Newsnews=ns.queryNnewsdetailsql2(nid);
//返回一个对象
publicStringgetNtitle(){
returnntitle;
}
publicvoidsetNtitle(Stringntitle){
this.ntitle=ntitle;
publicStringgetNcontent(){
returnncontent;
publicvoidsetNcontent(Stringncontent){
this.ncontent=ncontent;
publicStringgetNtime(){
returnntime;
publicvoidsetNtime(Stringntime){
this.ntime=ntime;
publicStringgetUsername(){
returnusername;
publicvoidsetUsername(Stringusername){
this.username=username;
由action直接跳转到要显示这些属性详细内容的页面
在jsp中直接使用标签<
ncontent"
取出即可
使用模型驱动:
查改
新建action查询文章类型:
importjavax.servlet.http.HttpServletRequest;
importorg.apache.struts2.ServletActionContext;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
importcom.opensymphony.xwork2.ModelDriven;
importcom.txxw.cms.news.model.Ctype;
importcom.txxw.cms.news.model.CtypeService;
/**
*@authorfejdE-mail:
lzd_niit_java@
*@version创建时间:
May22,20091:
43:
21PM
*功能实现:
文章类型修改内容查询
*/
publicclassCtypeeditActionextendsActionSupportimplementsModelDriven{
privateCtypectype=newCtype();
//将封装数据的ctype实现get和set方法
@Override
publicStringexecute()throwsException{
//TODOAuto-generatedmethodstub]
HttpServletRequestrequest=ServletActionContext.getRequest();
intct_id=Integer.parseInt(request.getParameter("
).replace("
"
"
));
//通过选择复选框来实现单个文章类型修改
CtypeServicecs=newCtypeService();
Ctypectype=cs.editctypesql(ct_id);
this.setCtype(ctype);
return"
;
publicObjectgetModel(){
//TODOAuto-generatedmethodstub
returnnull;
publicCtypegetCtype(){
returnctype;
publicvoidsetCtype(Ctypectype){
this.ctype=ctype;
}
Editctypesql()方法如下:
publicCtypeeditctypesql(intct_id)throwsIOException{
dbcon=newDBConnection();
con=dbcon.getCon();
Ctypecty=null;
Listctylist=newArrayList();
try{
psta=con.prepareStatement(this.getEditCtypesql(ct_id));
psta.setInt(1,ct_id);
rs=psta.executeQuery();
while(rs.next())
{
cty=newCtype();
cty.setCt_id(rs.getInt("
cty.setCt_name(rs.getString("
cty.setCt_sid(rs.getString("
//数据类型Clob转换String类型START//
try
{
oracle.sql.CLOBclob=(oracle.sql.CLOB)rs.getClob("
ct_introduction"
//数据库中存文本的CLOB型字段名
Stringct_introduction=clob.getSubString((long)1,(int)clob.length());
//subString是截取字符串(从1截到length)
if(clob==null||ct_introduction==null||ct_introduction=="
){
returnnull;
}
cty.setCt_introduction(ct_introduction);
System.out.println(ct_introduction);
}//try
catch(Exceptione){
logger.debug("
数据类型Clob转换String类型出现异常"
logger.info("
e.printStackTrace();
}
//数据类型Clob转换String类型END//
cty.setCt_image(rs.getString("
ct_image"
ctylist.add(cty);
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returncty;
publicStringgetEditCtypesql(intct_id){
this.editCtypesql="
select*fromsystem.ctypewherect_id=?
returneditCtypesql;
publicvoidsetEditCtypesql(StringeditCtypesql){
this.editCtypesql=editCtypesql;
注明:
上述方法中涉及到Oracle数据类型Clob转换成String类型问题
在jsp中使用
ctype.ct_id"
即可取出ctype中的数据。
10、Struts2+ajax实现批量删除,批量更新操作
全选:
checkAll()
不选:
checkAllNo()
反选:
swichAll()
批量删除:
deletenews()
批量更新:
display1news()
scripttype="
text/javascript"
functioncheckAll(){
varobj=document.getElementsByName("
for(i=0;
i<
obj.length;
i++){
obj[i].checked=true;
functioncheckAllNo(){
obj[i].checked=false;
functionswitchAll(){
obj[i].checked=!
obj[i].checked;
functionvals(input1,input2)
{
vartemp="
varobjForm=document.forms[input1];
varobjLen=objForm.length;
for(variCount=0;
iCount<
objLen;
iCount++)
if(objForm.elements[iCount].type=="
checkbox"
)
if(objForm.elements[iCount].checked==true&
&
objForm.elements[iCount].nid!
="
allSelected"
allConcled"
temp=temp+objForm.elements[iCount].value+"
//objForm.elements[iCount].checked=true;
returntemp;
functiondeletenews(){
varnid=vals('
form1'
'
this'
if(nid=="
){
alert('
你没有选中内容'
returnfalse;
}else{
if(confirm('
你确定要删除选中的内容吗'
+'
?
+nid)){
varurl="
delete.action?
nid="
+nid;
window.location.href=url;
}
functiondisplay1news(){
varnid=vals('
if(nid=="
alert('
returnfalse;
}else{
if(confirm('
你确定要显示选中的内容吗'
+nid)){
varurl="
display1news.action?
window.location.href=url;
/script>
11、控制Struts2<
提交表单样式
!
--form提交表单样式设置Start-->
styletype="
text/css"
--
form{margin:
0px;
display:
inline;
-->
/style>
--控制form表单样式-->
scriptlanguage="
javascript"
functionsub()
document.form.submit();
--form提交表单样式设置End-->
12、ajax前台验证(一部分)
functioncheck()
if(document.getElementById("
).value=="
alert("
请输入栏目名称!
请输入文章标题!
nprovider"
请输入供稿人!
ntelephone"
请输入联系电话!
varpartten1=/^1[3,5]\d{9}$/;
varpartten2=/^0(([1,2]\d)|([3-9]\d{2}))\d{8}$/;
if(partten1.test(document.getElementById("
).value)==false&
partten2.test(document.getElementById("
).value)==false)
请检查您输入的联系电话格式"
email"
请输入Email!
varzz=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
if(zz.test(document.getElementById("
请输入正确格式的Email."
updatectype"
name="
form"
textfieldname="
ctype.ct_name"
size="
30"
textfield>
nt"
请输入查询关键字"
document.getElementById("
form2"
).submit();
searchsortnews.action"
按标题:
inputtype="
text"
20"
hiddenname=