1.首先对iBATIS代码生成的延伸创建service层
创建InfoVoteitmService接口
package com.pana.portal.info.service; import java.sql.SQLException; public interface InfoVoteitmService { /** * 插入投票信息 * @param empId * @param detailid * @return * @throws SQLException */ public int AddInfoVoteitm(String empId,int detailid) throws SQLException; /** * 查询当天是否投票过 * @param empId * @param detailid * @return * @throws SQLException */ public int getInfoVoteitm(String empId,int detailid) throws SQLException; /** * 更新投票日期 * @param empId * @param detailid * @return * @throws SQLException */ public int updateInfoVoteitm(String empId,int detailid) throws SQLException; }
创建InfoVoteitmServiceImpl类对InfoVoteitmService接口方法的实现
package com.pana.portal.info.service.impl; import java.sql.SQLException; import java.util.Date; import java.util.List; import com.pana.portal.info.dao.InfovoteitmDAO; import com.pana.portal.info.model.Infovoteitm; import com.pana.portal.info.model.InfovoteitmExample; import com.pana.portal.info.service.InfoVoteitmService; public class InfoVoteitmServiceImpl implements InfoVoteitmService { private InfovoteitmDAO infovoteitmDAO; public InfovoteitmDAO getInfovoteitmDAO() { return infovoteitmDAO; } public void setInfovoteitmDAO(InfovoteitmDAO infovoteitmDAO) { this.infovoteitmDAO = infovoteitmDAO; } /** * 插入投票信息 * @param empId * @param detailid * @return * @throws SQLException */ public int AddInfoVoteitm(String empId,int detailid) throws SQLException{ Infovoteitm infovoteitm =new Infovoteitm(); infovoteitm.setEmpid(empId); infovoteitm.setInfodetailId(detailid); infovoteitmDAO.insertSelective(infovoteitm); return 0; } /** * 查询当天是否投票过 * @param empId * @param detailid * @return * @throws SQLException */ public int getInfoVoteitm(String empId,int detailid) throws SQLException{ InfovoteitmExample example =new InfovoteitmExample(); example.createCriteria().andEmpidEqualTo(empId).andInfodetailIdEqualTo(detailid); List<Infovoteitm> list=infovoteitmDAO.selectByExample(example); if(list.size()<1) return 0; else{ Date dateVoteitm=list.get(0).getVoteitmdate(); int yd=dateVoteitm.getDate(); int xd=new Date().getDate(); if(xd>yd) return 1; else return 2; } } /** * 更新投票日期 */ public int updateInfoVoteitm(String empId,int detailid) throws SQLException{ InfovoteitmExample example =new InfovoteitmExample(); example.createCriteria().andEmpidEqualTo(empId).andInfodetailIdEqualTo(detailid); Infovoteitm infovoteitm =new Infovoteitm(); infovoteitm.setEmpid(null); infovoteitm.setInfodetailId(null); infovoteitm.setVoteitmdate(new Date()); infovoteitmDAO.updateByExampleSelective(infovoteitm, example); return 0; } }
创建Action类InfozxDetailAction
package com.pana.portal.info.action.infozx; import java.io.UnsupportedEncodingException; import java.sql.SQLException; import java.text.NumberFormat; import java.util.Date; import java.util.List; import com.pana.combo.common.base.BaseAction; import com.pana.portal.info.model.Infocomments; import com.pana.portal.info.model.Infodetail; import com.pana.portal.info.service.INewsMassageService; import com.pana.portal.info.service.InfoCommentsService; import com.pana.portal.info.service.InfoDetailService; import com.pana.portal.info.service.InfoINewsService; import com.pana.portal.info.service.InfoVoteitmService; @SuppressWarnings("serial") public class InfozxDetailAction extends BaseAction { private InfoDetailService infodetailService; private InfoCommentsService infoCommentsService; private InfoVoteitmService infoVoteitmService; private Infodetail infodetail; private int detailid; private int infocategoryId; private String chname; private String cname; private String content; private List<Infocomments> listcomment; private INewsMassageService iNewsMassageService; private InfoINewsService infoinewsService; public InfoINewsService getInfoinewsService() { return infoinewsService; } public void setInfoinewsService(InfoINewsService infoinewsService) { this.infoinewsService = infoinewsService; } public INewsMassageService getiNewsMassageService() { return iNewsMassageService; } public void setiNewsMassageService(INewsMassageService iNewsMassageService) { this.iNewsMassageService = iNewsMassageService; } public InfoVoteitmService getInfoVoteitmService() { return infoVoteitmService; } public void setInfoVoteitmService(InfoVoteitmService infoVoteitmService) { this.infoVoteitmService = infoVoteitmService; } public List<Infocomments> getListcomment() { return listcomment; } public void setListcomment(List<Infocomments> listcomment) { this.listcomment = listcomment; } public InfoCommentsService getInfoCommentsService() { return infoCommentsService; } public void setInfoCommentsService(InfoCommentsService infoCommentsService) { this.infoCommentsService = infoCommentsService; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public InfoDetailService getInfodetailService() { return infodetailService; } public void setInfodetailService(InfoDetailService infodetailService) { this.infodetailService = infodetailService; } public Infodetail getInfodetail() { return infodetail; } public void setInfodetail(Infodetail infodetail) { this.infodetail = infodetail; } public int getDetailid() { return detailid; } public void setDetailid(int detailid) { this.detailid = detailid; } public int getInfocategoryId() { return infocategoryId; } public void setInfocategoryId(int infocategoryId) { this.infocategoryId = infocategoryId; } public String getChname() { return chname; } public void setChname(String chname) throws UnsupportedEncodingException { byte tempB[]=chname.getBytes("ISO-8859-1"); chname=new String(tempB,"UTF-8"); this.chname = chname; } public String getCname() { return cname; } public void setCname(String cname) throws UnsupportedEncodingException { byte tempB[]=cname.getBytes("ISO-8859-1"); cname=new String(tempB,"UTF-8"); this.cname = cname; } public String perform() throws SQLException { String operateUser = getLoginIDInSession(); Infodetail infobrowscount=new Infodetail(); infobrowscount=infodetailService.getInfoDetailByID(detailid, operateUser);//查询信息 infobrowscount.setBrowseCount(infobrowscount.getBrowseCount()+1); infodetailService.updateInfoDetail(infobrowscount, operateUser); infodetail = infodetailService.getInfoDetailByID(detailid, operateUser);//查询信息 listcomment = infoCommentsService.getInfoCommetsWithName(detailid);//查询评论 //更新消息为已读 iNewsMassageService.delElement(iNewsMassageService.getCode(operateUser).getName(), Integer.toString(detailid)); if(voteType==null) voteType=""; if(voteType.equals("1")){ int countType=infoVoteitmService.getInfoVoteitm(operateUser, detailid); if(countType==0){ infoVoteitmService.AddInfoVoteitm(operateUser, detailid); VoteItmImp(operateUser); vote="1"; } if(countType==1){ infoVoteitmService.updateInfoVoteitm(operateUser, detailid); VoteItmImp(operateUser); vote="1"; } if(countType==2){ vote="2"; } } //投票 int count=infodetail.getVoteItm1()+infodetail.getVoteItm2()+infodetail.getVoteItm3(); if(count!=0){ NumberFormat numberFormat = NumberFormat.getInstance(); numberFormat.setMaximumFractionDigits(2); v1 = numberFormat.format((float)infodetail.getVoteItm1()/(float)count*100); v2 = numberFormat.format((float)infodetail.getVoteItm2()/(float)count*100); v3 = numberFormat.format((float)infodetail.getVoteItm3()/(float)count*100); } //Integer.toString(infoinewsService.getAllInfoINews(infocategoryId,detailid).getId()); //infoinewsService.updateInfoINewsReadFlag("Info", Integer.toString(detailid), operateUser); return "SUCCESS"; } public String goComment() throws SQLException { String operateUser = getLoginIDInSession(); Date time = new Date(); Infocomments record=new Infocomments(); record.setInfodetailId(detailid); record.setUserLoginid(operateUser.trim()); record.setContent(content); record.setDatetime(time); infoCommentsService.insertInfoComments(record); perform(); return "comment"; } public void VoteItmImp(String operateUser) throws SQLException{ Infodetail infodt=new Infodetail(); infodt.setId(detailid); infodt.setVoteItm1(infodetail.getVoteItm1()); infodt.setVoteItm2(infodetail.getVoteItm2()); infodt.setVoteItm3(infodetail.getVoteItm3()); if(voteid.equals("1")){ infodt.setVoteItm1(infodetail.getVoteItm1()+1); infodetail.setVoteItm1(infodetail.getVoteItm1()+1); } if(voteid.equals("2")){ infodt.setVoteItm2(infodetail.getVoteItm2()+1); infodetail.setVoteItm2(infodetail.getVoteItm2()+1); } if(voteid.equals("3")){ infodt.setVoteItm3(infodetail.getVoteItm3()+1); infodetail.setVoteItm3(infodetail.getVoteItm3()+1); } infodetailService.updateVoteItm(infodt, operateUser); } /** * 是否是投票请求 */ private String voteType; /** * 投票选项 */ private String voteid; /** * 投票结果,是否允许投票 */ private String vote="0"; private String v1="0"; private String v2="0"; private String v3="0"; public String getVoteid() { return voteid; } public void setVoteid(String voteid) { this.voteid = voteid; } public String getVoteType() { return voteType; } public void setVoteType(String voteType) { this.voteType = voteType; } public String getV1() { return v1; } public void setV1(String v1) { this.v1 = v1; } public String getV2() { return v2; } public void setV2(String v2) { this.v2 = v2; } public String getV3() { return v3; } public void setV3(String v3) { this.v3 = v3; } public String getVote() { return vote; } public void setVote(String vote) { this.vote = vote; } }
在配置Struts和Spring对以上接口,service类做下说明
在InfoVoteitmServiceImpl类对InfoVoteitmService接口方法的实现中对InfovoteitmDAO的声明(infovoteitmDAO)以及方法的调用。
private InfovoteitmDAO infovoteitmDAO; public InfovoteitmDAO getInfovoteitmDAO() { return infovoteitmDAO; } public void setInfovoteitmDAO(InfovoteitmDAO infovoteitmDAO) { this.infovoteitmDAO = infovoteitmDAO; }
Action类InfozxDetailAction中对InfoVoteitmService的声明(infoVoteitmService)以及方法的调用。
private InfoVoteitmService infoVoteitmService; public InfoVoteitmService getInfoVoteitmService() { return infoVoteitmService; } public void setInfoVoteitmService(InfoVoteitmService infoVoteitmService) { this.infoVoteitmService = infoVoteitmService; }
配置结构图
首先对struts2Action-info.xml配置进行说明。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 信息管理 --> <package name="portalInfoDetail" namespace="/pana/portal/infopage" extends="struts-default"> <!-- 信息管理入口 --> <action name="infoEntry" class="infodtentryAction"> <result name="SUCCESS">/WEB-INF/pages/pana/system/infoEntry.jsp</result> </action> <!-- 附件上传入口 --> <action name="fileSide"> <result>/WEB-INF/pages/pana/portal/info/infopage/FileUploadSide.jsp</result> </action> <!-- 附件上传 --> <action name="fileupload" class="fileuploadAction"> <result>/WEB-INF/pages/pana/portal/info/infopage/FileUploadSide.jsp</result> </action> <action name="infodt_*" class="infodtshowAction" method="{1}"> <result name="view">/WEB-INF/pages/pana/portal/info/infopage/infodtView.jsp</result> <result name="tree">/WEB-INF/pages/pana/portal/info/infopage/infodtTree.jsp</result> <result name="show">/WEB-INF/pages/pana/portal/info/infopage/infodtShow.jsp</result> <result name="edit">/WEB-INF/pages/pana/portal/info/infopage/infodtEdit.jsp</result> </action> <action name="infodtupflag" class="infodtupflagAction"> <result>/WEB-INF/pages/pana/portal/info/infopage/infodtShow.jsp</result> <!-- <result type="redirectAction"> <param name="actionName">infodt_showList.do</param> <param name="availableFlags">${availableFlags}</param> <param name="page.currentPage">${pages}</param> <param name="channelandcategoryid">${channelandcategoryid}</param> <param name="titles">${titles}</param> <param name="dflag">${dflag}</param> <param name="encode">true</param> </result>--> </action> <action name="infodtdelete" class="infodtdeleteAction"> <result>/WEB-INF/pages/pana/portal/info/infopage/infodtShow.jsp</result> </action> </package> <!-- Ajax --> <package name="portalAjax" namespace="/pana/portal/infochannel" extends="json-default" > <!-- 保存 添加或编辑的信息 --> <action name="infodtedit" class="infodteditAction"> <result type="json"> <param name="root">resultFlag</param> </result> </action> <!-- 保存 添加或编辑的栏目信息 --> <action name="saveChannel" class="savechannelAction"> <result type="json" > <param name="root">resultFlag</param> </result> </action> <!-- 保存 添加或编辑的类别信息 --> <action name="saveCategory" class="savecategoryAction"> <result type="json" > <param name="root">resultFlag</param> </result> </action> <!-- 信息收藏添加 --> <action name="infofaadd" class="infofaaddAction"> <result type="json"> <param name="root">resultFlag</param> </result> </action> <action name="selectyouname" class="selectyounameAction"> <result type="json"> <param name="root">resultFlag</param> </result> </action> <!-- 自己添加的 管理员搜索--> <action name="selectnamebykey" class="selectnamebykeyAction" > <result type="json"> <param name="root">resultFlag</param> </result> </action> <!-- 辅助栏目添加编辑--> <action name="saveInfolink" class="saveInfolinkAction"> <result type="json" > <param name="root">resultFlag</param> </result> </action> <action name="saveInfoEmp" class="saveInfoEmpAction"> <result type="json" > <param name="root">resultFlag</param> </result> </action> </package> <!-- 栏目 和 类别管理 --> <package name="portalInfoChannel" namespace="/pana/portal/infochannel" extends="struts-default"> <!-- 信息栏目入口 --> <action name="infochEntry" class="infochentryAction"> <result>/WEB-INF/pages/pana/system/infochEntry.jsp</result> </action> <action name="infochFlag" class="infochFlagAction"> <result>/WEB-INF/pages/pana/portal/info/infochpage/showChannel.jsp</result> </action> <!-- 信息栏目列表页面 --> <action name="channelAction_*" class="channelshowAction" method="{1}"> <result name="show">/WEB-INF/pages/pana/portal/info/infochpage/showChannel.jsp</result> <result name="add">/WEB-INF/pages/pana/portal/info/infochpage/addChannel.jsp</result> <result name="edit">/WEB-INF/pages/pana/portal/info/infochpage/updateChannel.jsp</result> </action> <!-- 信息类别入口 --> <action name="infocaEntry"> <result>/WEB-INF/pages/pana/system/infocaEntry.jsp</result> </action> <!-- 信息类别列表页面 --> <action name="infocateAction_*" class="infocateAction" method="{1}"> <result name="view">/WEB-INF/pages/pana/portal/info/infocapage/viewinfoCate.jsp</result> <result name="show">/WEB-INF/pages/pana/portal/info/infocapage/showinfoCate.jsp</result> <result name="add">/WEB-INF/pages/pana/portal/info/infocapage/addInfoCate.jsp</result> <result name="edit">/WEB-INF/pages/pana/portal/info/infocapage/updateInfoCate.jsp</result> </action> <!-- 信息类别添加跳转 --> <action name="goAdd" class="goaddinfocate" > <result>/WEB-INF/pages/pana/portal/info/infocapage/addInfoCate.jsp</result> </action> <!-- 信息类别左边栏目树 --> <action name="treeinfoca" class="treeinfoAction" > <result>/WEB-INF/pages/pana/portal/info/infocapage/treeinfoCate.jsp</result> </action> <!-- 自己添加的选择栏目管理者--> <action name="selectname" class="selectnameAction"> <result name="SUCCESS">/WEB-INF/pages/pana/portal/info/infochpage/selectChannelManage.jsp</result> <result name="INFO">/WEB-INF/pages/pana/portal/info/infopage/selectChannelInfo.jsp</result> </action> </package> <!-- 信息收藏管理 --> <package name="portalInfoFavirate" namespace="/pana/portal/infofa" extends="struts-default"> <!-- 信息收藏管理入口 --> <action name="infofaEntry" class="infofaentryAction"> <result>/WEB-INF/pages/pana/system/infofaEntry.jsp</result> </action> <!-- 信息收藏列表 --> <action name="infofaShow" class="infofashowAction"> <result>/WEB-INF/pages/pana/portal/info/infofapage/infofaShow.jsp</result> </action> <!-- 信息收藏删除 --> <action name="infofadel" class="infofadelAction"> <result type="redirect">infofaShow.do</result> </action> </package> <!-- 信息中心View --> <package name="portalInfozxview" namespace="/pana/portal/infozx" extends="struts-default"> <!-- 信息中心栏目相关信息 --> <action name="infozxlmshow" class="infozxlmshowAction"> <result>/WEB-INF/pages/pana/portal/info/infozxpage/infozxShow.jsp</result> </action> <action name="infozxview" class="infozxviewAction"> <result>/WEB-INF/pages/pana/portal/info/infozxpage/infozxView.jsp</result> </action> <!-- 信息中心下的栏目类别 --> <action name="infozxtree" class="infozxtreeAction"> <result>/WEB-INF/pages/pana/portal/info/infozxpage/infozxTree.jsp</result> </action> <!-- 信息中心详细信息 --> <action name="infozxdetail_*" class="infozxdetailAction" method="{1}"> <result name="SUCCESS">/WEB-INF/pages/pana/portal/info/infozxpage/infozxDetail.jsp</result> <result name="comment">/WEB-INF/pages/pana/portal/info/infozxpage/infozxDetail.jsp</result> </action> <!-- 附件下载 --> <action name="download" class="downloadAction"> <!-- <param name="inputPath">/download/aaa.txt</param> --> <!-- 初始文件名 <param name="fileName">aaa.txt</param>--> <result name="success" type="stream"> <param name="contentType">application/octet-stream;charset=ISO8859-1 </param> <param name="inputName">inputStream</param> <!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性 对应action类中的方法 getDownloadFileName() --> <param name="contentDisposition">attachment;filename="${downloadFileName}"</param> <param name="bufferSize">4096</param> </result> </action> <!-- 自己添加的,评论列表 --> <action name="infocomments_*" class="infocommentsAction" method="{1}"> <result name="show">/WEB-INF/pages/pana/portal/info/infozxpage/infoCommentsShow.jsp</result> <result name="view">/WEB-INF/pages/pana/portal/info/infozxpage/infoCommentsView.jsp</result> <result name="tree">/WEB-INF/pages/pana/portal/info/infozxpage/infoCommentsTree.jsp</result> <result name="delete">/WEB-INF/pages/pana/portal/info/infozxpage/infoCommentsShow.jsp</result> </action> <!-- 自己添加的,评论列表进入 --> <action name="infoCommentsEntry" class="infoCommentsEntryAction"> <result name="SUCCESS">/WEB-INF/pages/pana/system/infoCommentsEntry.jsp</result> </action> </package> <!-- 信息动态组件 --> <package name="portalInfozj" namespace="/pana/portal/infozj" extends="struts-default"> <action name="infofazj" class="infofazj1ShowAction"> <result>/WEB-INF/pages/pana/system/infozxEntry.jsp</result> </action> </package> <!-- INews组件 --> <package name="portalINews" namespace="/pana/portal/iNews" extends="struts-default"> <action name="iNews" class="iNewszjAction"> <result>/WEB-INF/pages/pana/system/infoINewsEntry.jsp</result> </action> <action name="iNewsView"> <result>/WEB-INF/pages/pana/portal/info/iNewspage/iNewsView.jsp</result> </action> <action name="iNewsShow" class="iNewsShowAction"> <result>/WEB-INF/pages/pana/portal/info/iNewspage/iNewsShow.jsp</result> </action> <action name="iNewsTree"> <result>/WEB-INF/pages/pana/portal/info/iNewspage/iNewsTree.jsp</result> </action> </package> <!-- XML接口 --> <package name="portalXML" namespace="/pana/portal/xml" extends="struts-default"> <action name="xmlRead" class="xmlReadAction"> <result>/WEB-INF/pages/pana/xmlRead.jsp</result> </action> <action name="xmlDel" class="xmlDelAction"> <result>/WEB-INF/pages/pana/xmlRead.jsp</result> </action> </package> <!-- 搜索 --> <package name="portalSearch" namespace="/pana/portal/search" extends="struts-default"> <action name="searchInfo" class="searchInfoAction"> <result>/WEB-INF/pages/pana/portal/info/infoSearch.jsp</result> </action> <action name="searchEmp" class="searchEmpAction"> <result>/WEB-INF/pages/pana/portal/info/empSearch.jsp</result> </action> <action name="detailEmp_*" class="detailEmpAction" method="{1}"> <result>/WEB-INF/pages/pana/portal/info/empDetail.jsp</result> <result name="edit">/WEB-INF/pages/pana/portal/info/empInfoEdit.jsp</result> </action> </package> <!-- 导航 --> <package name="portalNavigation" namespace="/pana/portal/navigation" extends="struts-default"> <action name="navigationInfo_*" class="navigationAction" method="{1}"> <result>/WEB-INF/pages/pana/system/infoNaEntry.jsp</result> <result name="show">/WEB-INF/pages/pana/portal/info/infoNavigation.jsp</result> </action> </package> <!-- 菜单辅助栏 --> <package name="portalInfoLink" namespace="/pana/portal/infolink" extends="struts-default"> <action name="infoLink" class="infoLinkAction"> <result>/WEB-INF/pages/pana/system/infoliEntry.jsp</result> </action> <action name="infoLinkShow" class="infoLinkShowAction"> <result>/WEB-INF/pages/pana/portal/info/infolipage/infoliShow.jsp</result> </action> <action name="infoLinkEdit" class="infoLinkEditAction"> <result name="none" type="redirectAction"> <param name="actionName">infoLinkShow</param> <param name="namespace">/pana/portal/infolink</param> <param name="title">${title}</param> <param name="page.currentPage">${page.currentPage}</param> </result> <result name="success">/WEB-INF/pages/pana/portal/info/infolipage/infoliEdit.jsp</result> </action> </package> <!-- Flash信息 --> <package name="portalInfoFlash" namespace="/pana/portal/IndexFlash" extends="struts-default"> <action name="iFlash"> <result>/WEB-INF/pages/pana/system/indexFlash.jsp</result> </action> <action name="Flash_*" class="iFlashAction" method="{1}"> <result name="view">/WEB-INF/pages/pana/portal/info/iFlashpage/iFlashShow.jsp</result> <result name="edit">/WEB-INF/pages/pana/portal/info/iFlashpage/iFlashEdit.jsp</result> <result name="add">/WEB-INF/pages/pana/portal/info/iFlashpage/iFlashAdd.jsp</result> <result name="index">/WEB-INF/pages/pana/system/indexFlash.jsp</result> <result name="ple">/WEB-INF/pages/pana/system/iFlashSimpleShow.jsp</result> <result name="upview">/WEB-INF/pages/pana/portal/info/iFlashpage/UploadFlashImage.jsp</result> <result name="upflash">/WEB-INF/pages/pana/portal/info/iFlashpage/UploadFlashImage.jsp</result> <result name="editupview">/WEB-INF/pages/pana/portal/info/iFlashpage/UploadEditFlashImage.jsp</result> <result name="upeditflash">/WEB-INF/pages/pana/portal/info/iFlashpage/UploadEditFlashImage.jsp</result> </action> </package> <!-- 表单下载列表信息 --> <package name="portaltableIndex" namespace="/pana/portal/tableIndex" extends="struts-default"> <action name="litble_*" class="litbleAction" method="{1}"> <result name="tree">/WEB-INF/pages/pana/portal/info/infocapage/tabledownloadtree.jsp</result> <result name="all">/WEB-INF/pages/pana/portal/info/infocapage/TableInfo.jsp</result> <result name="simple">/WEB-INF/pages/pana/system/TabledownloadSimpleShow.jsp</result> </action> <action name="rightShow" class="rightShowAction" > <result>/WEB-INF/pages/pana/portal/info/infocapage/TableRightInfo.jsp</result> </action> </package> </struts>
<!-- 信息中心详细信息 --> <action name="infozxdetail_*" class="infozxdetailAction" method="{1}"> <result name="SUCCESS">/WEB-INF/pages/pana/portal/info/infozxpage/infozxDetail.jsp</result> <result name="comment">/WEB-INF/pages/pana/portal/info/infozxpage/infozxDetail.jsp</result> </action>
<action name="infozxdetail_*" class="infozxdetailAction" method="{1}">中的"name"代表Action的名字如果一个方法返回多个结果可以采用如上方法实现不同的结果跳转,"infozxdetail_*"Action最终的名字需要根据所指向的方法来决定,"class"这了所指起的作用是标识id可以任意取名字,method="{1}" 表示方法有多个实现不同的跳转。
<result name="SUCCESS"> 中的"name" 是Action后台方法返回的字符串。
到此Struts配置就完成了,现在看看如何配置Spring(applicationContext-info.xml)。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans default-autowire="byName" default-lazy-init="true"> <!-- Dao --> <bean name="infocategoryDAO" class="com.pana.portal.info.dao.impl.InfocategoryDAOImpl"> </bean> <bean name="infochannelDAO" class="com.pana.portal.info.dao.impl.InfochannelDAOImpl"> </bean> <bean name="infocommentsDAO" class="com.pana.portal.info.dao.impl.InfocommentsDAOImpl"> </bean> <bean name="infodetailDAO" class="com.pana.portal.info.dao.impl.InfodetailDAOImpl"> </bean> <bean name="infodetaileditlogDAO" class="com.pana.portal.info.dao.impl.InfodetaileditlogDAOImpl"> </bean> <bean name="infodetailvscategoryDAO" class="com.pana.portal.info.dao.impl.InfodetailvscategoryDAOImpl"> </bean> <bean name="infofavirateDAO" class="com.pana.portal.info.dao.impl.InfofavirateDAOImpl"> </bean> <bean name="infoinewsDAO" class="com.pana.portal.info.dao.impl.InfoinewsDAOImpl"> </bean> <bean name="massageDAO" class="com.pana.portal.info.dao.impl.MassageDAOImpl"> </bean> <bean name="infodetailvsemployeeDAO" class="com.pana.portal.info.dao.impl.InfodetailvsemployeeDAOImpl"> </bean> <bean name="systemUsrDAO" class="com.pana.system.emp.dao.impl.SystemUsrDAOImpl"> </bean> <bean name="systemComponentDAO" class="com.pana.system.component.dao.impl.SystemComponentDAOImpl"> </bean> <bean name="systemComponentFunctionDAO" class="com.pana.system.component.dao.impl.SystemComponentFunctionDAOImpl"> </bean> <bean name="systemRoleFunctionDAO" class="com.pana.system.role.dao.impl.SystemRoleFunctionDAOImpl"> </bean> <bean name="systemRoleEmpDAO" class="com.pana.system.role.dao.impl.SystemRoleEmpDAOImpl"> </bean> <bean name="systemEmpDAO" class="com.pana.system.emp.dao.impl.SystemEmpDAOImpl"> </bean> <bean name="infochannelvsemployeeDAO" class="com.pana.portal.info.dao.impl.InfochannelvsemployeeDAOImpl"> </bean> <bean name="infolinkDao" class="com.pana.portal.info.dao.impl.InfolinkDAOImpl"> </bean> <bean name="infovoteitmDAO" class="com.pana.portal.info.dao.impl.InfovoteitmDAOImpl"> </bean> <bean name="iFlashDAO" class="com.pana.portal.info.dao.impl.InfoflashDAOImpl"> </bean> <!-- Service --> <bean name="infocategoryService" class="com.pana.portal.info.service.impl.InfocategoryServiceImpl"> </bean> <bean name="infochannelService" class="com.pana.portal.info.service.impl.InfoChannelServiceImpl"> </bean> <bean name="infocommentsService" class="com.pana.portal.info.service.impl.InfoCommentsServiceImpl"> </bean> <bean name="infodetaileditLogService" class="com.pana.portal.info.service.impl.InfoDetailEditLogServiceImpl"> </bean> <bean name="infodetailService" class="com.pana.portal.info.service.impl.InfoDetailServiceImpl"> </bean> <bean name="infofavirateService" class="com.pana.portal.info.service.impl.InfoFavirateServiceImpl"> </bean> <bean name="infoinewsService" class="com.pana.portal.info.service.impl.InfoINewsServiceImpl"> </bean> <bean name="massageService" class="com.pana.portal.info.service.impl.MassageServiceImpl"> </bean> <bean name="formatService" class="com.pana.portal.info.service.impl.FormatImpl"> </bean> <bean id="infodetailvsemployeeService" class="com.pana.portal.info.service.impl.InfodetailvsemployeeServiceImpl"> </bean> <bean id="infoDetailvscategoryService" class="com.pana.portal.info.service.impl.InfoDetailvscategoryServiceImpl"> </bean> <bean id="empService" class="com.pana.system.emp.service.impl.EmpServiceImpl"> </bean> <bean id="infoCommentsService" class="com.pana.portal.info.service.impl.InfoCommentsServiceImpl"> </bean> <bean id="infoChannelVSEmployeeService" class="com.pana.portal.info.service.impl.InfoChannelVSEmployeeServiceImpl"> </bean> <bean id="iNewsMassageService" class="com.pana.portal.info.service.impl.INewsMassageServiceImpl"> </bean> <bean id="infoLinkService" class="com.pana.portal.info.service.impl.InfoLinkServiceImpl"> </bean> <bean id="infoVoteitmService" class="com.pana.portal.info.service.impl.InfoVoteitmServiceImpl"> </bean> <bean id="orgService" class="com.pana.system.org.service.impl.OrgServiceImpl"> </bean> <bean id="userService" class="com.pana.system.emp.service.impl.UserServiceImpl"> </bean> <bean id="iFlashService" class="com.pana.portal.info.service.impl.InfoFlashServiceImpl"> </bean> <!-- Action--> <!-- 信息管理入口 --> <bean id="iFlashAction" class="com.pana.portal.info.action.infoFlash.InfoFlashAction" scope="prototype"></bean> <!-- 信息管理入口 --> <bean id="infodtentryAction" class="com.pana.portal.info.action.infodt.InfoEntryAction" scope="prototype"></bean> <!-- 信息管理列表 --> <bean id="infodtshowAction" class="com.pana.portal.info.action.infodt.InfoDetailAction" scope="prototype"></bean> <!-- 信息管理更新 --> <bean id="infodtupflagAction" class="com.pana.portal.info.action.infodt.InfoDetailUpFlagAction" scope="prototype"></bean> <!-- 信息管理添加 编辑--> <bean id="infodteditAction" class="com.pana.portal.info.action.infodt.InfoDetailEditAction" scope="prototype"></bean> <!-- 信息管理添加 删除--> <bean id="infodtdeleteAction" class="com.pana.portal.info.action.infodt.InfoDeleteAction" scope="prototype"></bean> <!-- 自己添加的,评论列表--> <bean id="infoCommentsEntryAction" class="com.pana.portal.info.action.infozx.InfoCommentsEntryAction" scope="prototype"></bean> <bean id="infocommentsAction" class="com.pana.portal.info.action.infozx.InfoCommentsAction" scope="prototype"></bean> <!-- 信息栏目管理 --> <bean id="channelshowAction" class="com.pana.portal.info.action.infoch.channelAction" scope="prototype"></bean> <!-- 信息栏目添加编辑Ajax管理 --> <bean id="infochFlagAction" class="com.pana.portal.info.action.infoch.channelFlagAction" scope="prototype"></bean> <bean id="savechannelAction" class="com.pana.portal.info.action.infoch.savechannelAction" scope="prototype"></bean> <!-- 信息栏目组件入口 --> <bean id="infochentryAction" class="com.pana.portal.info.action.infoch.channelAction" scope="prototype"></bean> <!-- 自己添加的,选择项目管理者 --> <bean id="selectnameAction" class="com.pana.portal.info.action.infoch.selectChannelManageAction" scope="prototype"></bean> <bean id="selectnamebykeyAction" class="com.pana.portal.info.action.infoch.SelectManageNameByKeyAction" scope="prototype"></bean> <bean id="selectyounameAction" class="com.pana.portal.info.action.infoch.selectyounameAction" scope="prototype"></bean> <!-- 添加信息类别时的栏目集合 --> <bean id="goaddinfocate" class="com.pana.portal.info.action.infoca.goAddInfoCate" scope="prototype"></bean> <!-- 信息类别管理 --> <bean id="infocateAction" class="com.pana.portal.info.action.infoca.infocateAction" scope="prototype"></bean> <!-- 信息类别添加编辑Ajax管理 --> <bean id="savecategoryAction" class="com.pana.portal.info.action.infoca.saveinfocateAction" scope="prototype"></bean> <!-- 信息类别左边栏目树结构 --> <bean name="treeinfoAction" class="com.pana.portal.info.action.infoca.treeinfocateAction" scope="prototype"></bean> <bean name="litbleAction" class="com.pana.portal.info.action.infoca.infocateTableAction" scope="prototype"></bean> <bean name="rightShowAction" class="com.pana.portal.info.action.infoca.infoRightTable" scope="prototype"></bean> <!-- 信息收藏管理入口 --> <bean id="infofaentryAction" class="com.pana.portal.info.action.infofa.InfoFavirateAction" scope="prototype"></bean> <!-- 信息收藏列表 --> <bean id="infofashowAction" class="com.pana.portal.info.action.infofa.InfoFavirateAction" scope="prototype"></bean> <!-- 信息收藏删除 --> <bean id="infofadelAction" class="com.pana.portal.info.action.infofa.InfoFavirateDelAction" scope="prototype"></bean> <!-- 信息收藏添加 --> <bean id="infofaaddAction" class="com.pana.portal.info.action.infofa.InfoFavirateAddAction" scope="prototype"></bean> <!-- 信息中心View --> <bean id="infozxviewAction" class="com.pana.portal.info.action.infozx.InfozxViewAction" scope="prototype"></bean> <!-- 信息中心列表 --> <bean id="infozxlmshowAction" class="com.pana.portal.info.action.infozx.InfozxShowAction" scope="prototype"></bean> <!-- 信息中心列表树 --> <bean id="infozxtreeAction" class="com.pana.portal.info.action.infozx.InfozxTreeAction" scope="prototype"></bean> <!-- 信息中心详细信息 --> <bean id="infozxdetailAction" class="com.pana.portal.info.action.infozx.InfozxDetailAction" scope="prototype"></bean> <!-- 信息中心动态组件 --> <bean id="infofazj1ShowAction" class="com.pana.portal.info.action.infozj.InfozjAction" scope="prototype"></bean> <!-- INews组件 --> <bean id="iNewszjAction" class="com.pana.portal.info.action.iNews.INewsAction" scope="prototype"></bean> <bean id="iNewsShowAction" class="com.pana.portal.info.action.iNews.INewsShowAction" scope="prototype"></bean> <!-- 附件上传组件 --> <bean id="fileuploadAction" class="com.pana.portal.info.action.FileUploadAction" scope="prototype"></bean> <!-- 附件下载 --> <bean id="downloadAction" class="com.pana.portal.info.action.DownloadAction" scope="prototype"></bean> <!-- XML--> <bean id="xmlReadAction" class="com.pana.portal.info.action.InfoReadXmlAction" scope="prototype"></bean> <bean id="xmlDelAction" class="com.pana.portal.info.action.InfoDelXmlAction" scope="prototype"></bean> <!-- 搜索 --> <bean id="searchInfoAction" class="com.pana.portal.info.action.infose.InfoSearchAction" scope="prototype"></bean> <bean id="searchEmpAction" class="com.pana.portal.info.action.infose.EmpSearchAction" scope="prototype"></bean> <bean id="detailEmpAction" class="com.pana.portal.info.action.infose.EmpDetailAction" scope="prototype"></bean> <bean id="saveInfoEmpAction" class="com.pana.portal.info.action.infose.SaveEmpAction" scope="prototype"></bean> <!-- 快速导航 --> <bean id="navigationAction" class="com.pana.portal.info.action.infona.InfoNavigationAction" scope="prototype"></bean> <!-- 辅助栏目 --> <bean id="infoLinkAction" class="com.pana.portal.info.action.infoli.InfoLinkAction" scope="prototype"></bean> <bean id="infoLinkShowAction" class="com.pana.portal.info.action.infoli.InfoLinkShowAction" scope="prototype"></bean> <bean id="infoLinkEditAction" class="com.pana.portal.info.action.infoli.InfoLinkEditAction" scope="prototype"></bean> <bean id="saveInfolinkAction" class="com.pana.portal.info.action.infoli.InfoLinkSaveAction" scope="prototype"></bean> </beans>
Spring中主要对Dao,service,action进行配置(针对上面代码作如下配置)。
对Dao的配置
<bean name="infovoteitmDAO" class="com.pana.portal.info.dao.impl.InfovoteitmDAOImpl"> </bean>
对service的配置
<bean id="infoVoteitmService" class="com.pana.portal.info.service.impl.InfoVoteitmServiceImpl"> </bean>
对action的配置
<bean id="infozxdetailAction" class="com.pana.portal.info.action.infozx.InfozxDetailAction" scope="prototype"></bean>
对上面的配置分析结果如下:
1.Dao配置中的name="infovoteitmDAO" 其实是在InfoVoteitmServiceImpl类对InfoVoteitmService接口方法的实现中对InfovoteitmDAO的声明(字段)
class="com.pana.portal.info.dao.impl.InfovoteitmDAOImpl" 指向的是对InfovoteitmDAO接口方法的实现类位置的指向。
2.service的配置的id="infoVoteitmService" 其实是在Action类InfozxDetailAction中对InfoVoteitmService的声明(字段) class="com.pana.portal.info.service.impl.InfoVoteitmServiceImpl" 指向的是对InfoVoteitmService接口方法的实现类
位置的指向。
3.对action的配置的id="infozxdetailAction" 其实是在struts2Action-info.xml配置中定义的class="infozxdetailAction"的指向,
那Spring对action配置class="com.pana.portal.info.action.infozx.InfozxDetailAction"指向的是InfozxDetailAction类的位置
的指向。
到此整个SSI(Struts2+Spring+iBATIS)基本的配置就算完成了。