|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。技能Struts开辟技能
在履历了《中国电信年夜客户知心服务》项目标开辟和今朝正在举行开辟中的《中国电信总部谋划剖析》项目,累计了一些关于Struts1.1和Tiles开辟的一些手艺和技能,特写出来,便利今后的开辟,同时也信任能给读者在开辟Struts供应一些匡助
模块设置
1.Struts设置文件界说
关于体系中的某个模块,必要在开辟前界说该模块的设置,该struts的设置文件定名为:
struts-config-xxx.xml
xxx为模块的小写英文名或缩写,如:struts-config-sysman.xml
注重:两头为“-”,而不是“_”毗连符
一致保留在“WEB-INFxml”文件夹下,并必要在web.xml中增加响应的设置文件
地点,详细以下例:
…
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml,/WEB-INF/xml/struts-config-pages.xml,/WEB-INF/xml/struts-config-sysman.xml</param-value>
</init-param>
…
注重:必要用“,”毗连符离隔各个设置文件名
别的,一切的静态jsp必要经由过程设置文件界说其“.do”情势的会见,保留在
struts-config-pages.xml文件中,内容以下例:
…
<!--主页转向-->
<actionpath="/main"type="org.apache.struts.actions.ForwardAction"parameter="/main.jsp"/>
…
2.Tiles设置文件界说
体系的框架设置文件为tiles-defs_zh_CN.xml(经由过程.properties属性文件撑持国际化使用,默许是tiles-defs.xml),模块的框架布局必要界说在内里,以下例:
…
<!--界说默许首页-->
<definitionname="default.frame"path="/layouts/defaultLayout.jsp">
<putname="title"value="接待进进电信谋划剖析体系"/>
<putname="header"value="/top.jsp"/>
<putname="body"value="default.body"/>
<putname="footer"value="/buttom.jsp"/>
</definition>
<!--界说默许首页的body-->
<definitionname="default.body"path="/layouts/main.jsp">
<putname="logon"value="/logon.jsp"/>
<putname="date"value="/layouts/date.jsp"/>
<putname="linkSite"value="/layouts/link.html"/>
</definition>
…
框架定名标准按“体系(子体系).功效模块.页面模块”,如下面的“default.frame”
在struts-config-pages.xml文件中的设置的页面action能够如许写:
<actionpath="/main"type="org.apache.struts.actions.ForwardAction"parameter="default.frame"/>
如许就不用独自写一个tiles:insert的页面,以下:
<tiles:insertdefinition="vip.warn.day"flush="true"/>
3.模块中的正文
不仅必要在程序中增加需要的正文,在界说设置文件的时分也必需必要增加响应正文,次要是在struts-config-xxx.xml和tiles-defs_zh_CN.xml这些文件中增加正文,要把action或设置模块的功效注释分明,放在设置项的后面,拜见下面的设置文件
4.关于设置文件的编纂
不克不及利用Jbuilder内里的xml编纂功效,由于JB会主动地改动xml内里的编码和内容,因而,对xml设置文件的编纂,要利用编纂软件,如UE等
事务界说
事务对应的类次要有Action、ActionForm,另有jsp中提交的“.do”界说,和页面举措的提交,以login登录为例:
1.类的定名界说(首字母需年夜写)
情势为“举措名+Action/Form”
如:LoginAction.class、LoginForm.class
2.页面地点界说(首字母需小写)
假如有两个单词以上,第二个单词首字母年夜写,依此类推
情势为“举措名”
如:login.do或loginSys.do
jsp文件定名也按此标准
3.页面举措界说
由于jsp页面中的Form对应ActionForm,其自己有action这个属性,以是页面举措假如界说也为action,会引发不用要的贫苦,以是,把页面举措一致界说为“act”,
如必要编纂某笔记录,地点以下:
“/editRecord.do?act=Edit”
如必要删除,地点以下:
“/editRecord.do?act=Delete”
4.关于菜单和操纵事务触发的把持机制
因为体系中的菜单和操纵都是由“.do”情势向服务端发哀求的,因而必要一套机制来把持哪些是对菜单的事务哀求,哪些是对操纵的事务哀求;
我们在体系中引进了Filter过滤器,对一切哀求举行把持,和判别用户是不是登录和是不是有对资本(菜单等)会见权限等;
商定:
jsp页面上关于体系中菜单的哀求都是“GET”办法,关于操纵的Action都是“POST”办法;
有了如许的商定,在Filter中先判别request的哀求办法,假如是“GET”办法,则以为是对菜单的哀求,以是往“菜单表”依据哀求地点读取响应的纪录,并读取用户的权限表,判别用户的菜单权限;
假如是“POST”的办法,则以为是对操纵的哀求,并提取request中的“act”举措,举行对用户的权限点的判断。
参数信息猎取
1.大众参数信息经由过程Plugin体例在Web服务启动时将变量放进application中,使得在任何必要该变量的jsp中都能够挪用;
体例以下:
publicvoidsetServletContext(ActionServletactionServlet){
try{
ServletContextsc=actionServlet.getServletContext();
//SysInitPwd
sc.setAttribute(Constants.SYS_INIT_PWD,SelectLists.getSysConfig("PWDINIT"));
…
在action等程序中的挪用体例:
getServlet().getServletContext().getAttribute(“…”);
2.关于页面上必要展现的数据只管寄存在request这个局限里,能够加重服务器端内存负载,体例以下:
//挪用员工处置类
StaffDealsd=newStaffDeal();
//依据员工形态查询员工
ArrayListal=sd.qryStaff(strState);
//放进request
request.setAttribute("staffInfo",al);
3.公有的或必要依据用户的属性来猎取参数信息的,能够在tiles的界说中利用“controlClass=xxx”这个体例猎取,设置以下例:
<definitionname="vip.welcome"path="/vip/welcome.jsp"controllerClass="viptx.logic.vip.welcomeAction"/>
需implementsController中的perform办法,代码以下例:
publicvoidperform(ComponentContextcomponentContext,
HttpServletRequestrequest,
HttpServletResponseresponse,
ServletContextservletContext)throwsIOException,ServletException{
HttpSessionsession=request.getSession();
//Getcurrentsession.
Useruser=(User)session.getAttribute(Constants.USER_KEY);
if(user==null){
returnnull;
}
Stringuid=user.getUserid();
Stringsql="selectuserid,contentfromti_salutatorywhereuserid= |
|