struts2自定义框架Word下载.docx
- 文档编号:17544830
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:14
- 大小:37.85KB
struts2自定义框架Word下载.docx
《struts2自定义框架Word下载.docx》由会员分享,可在线阅读,更多相关《struts2自定义框架Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
success"
success.jsp<
/result>
bai"
bai.jsp<
/action>
/actions>
/mystruts>
第2步:
定义Action类
package.hx.framework;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/**
*自定义Action类
*@authorAdministrator
*
*/
publicinterfaceAction{
publicstaticStringSUCCESS="
;
publicstaticStringINPUT="
input"
publicstaticStringERROR="
error"
publicStringexecute(HttpServletRequestrequest,HttpServletResponseresponse)
throwsException;
}
第3步:
定义Action管理类
*Action管理类
publicclassActionManager{
/**
*根据类名称获取Action的实现类的实例
*@paramclassName
*@return
publicstaticActiongetAction(StringclassName){
try{
Actionaction=(Action)Class.forName(className).newInstance();
returnaction;
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(InstantiationExceptione){
}catch(IllegalAccessExceptione){
}
returnnull;
}
第4步:
定义好影射类
importjava.util.HashMap;
importjava.util.Map;
*保存Action信息类
publicclassActionMapping{
*Action元素的名称
privateStringname;
*Action元素额类名称(全名)
privateStringclassName;
*当前Action标签中-->
所有Result标签的配置
privateMap<
String,String>
resultMap=newHashMap<
();
*把结果防止到集合中
*@paramname
*@paramresult
publicvoidaddResult(Stringname,Stringresult){
this.resultMap.put(name,result);
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
this.name=name;
publicStringgetClassName(){
returnclassName;
publicvoidsetClassName(StringclassName){
this.className=className;
publicMap<
getResultMap(){
returnresultMap;
publicvoidsetResultMap(Map<
resultMap){
this.resultMap=resultMap;
第5步:
读取struts.xml的配置文件
importjava.io.InputStream;
importjava.util.Iterator;
importjava.util.List;
importjavax.swing.ActionMap;
importorg.dom4j.Document;
importorg.dom4j.Element;
importorg.dom4j.io.SAXReader;
*Action元素管理类
*
publicclassActionMappingManager{
*保存所有的Action标签内容集合
privatestaticMap<
String,ActionMapping>
actionMappings=
newHashMap<
publicActionMappingManager(String[]configFileNames){
for(StringconfigName:
configFileNames){
//加载配置文件
init(configName);
*加载struts.xml的配置文件
*@paramconfigName配置文件的名称
publicvoidinit(StringconfigName){
/**
*判断配置文件的名称
*/
if(configName==null||configName.isEmpty()){
thrownewException("
配置文件的名称不能为空!
"
);
}
InputStreamis=this.getClass().getResourceAsStream("
/"
+configName);
*使用dom4j读取配置文件内容
*读取流对象
Documentdocument=newSAXReader().read(is);
/*
*获取根节点
ElementrootElement=document.getRootElement();
//获取actions元素
Iterator<
Element>
els=rootElement.elements("
actions"
).iterator();
Elementactions=els.next();
//获取第一个actions标签下的所有action标签
List<
actionList=actions.elements("
action"
for(Elementelement:
actionList){
ActionMappingmapping=newActionMapping();
mapping.setName(element.attributeValue("
name"
));
//获取action的名称
mapping.setClassName(element.attributeValue("
class"
//获取action的类全名称
//获取result元素
for(Iterator<
results=element.elementIterator("
result"
results.hasNext();
){
Elementresult=results.next();
Stringname=result.attributeValue("
//获取结果名称
StringredirectUrl=result.getText();
//获取标签的文本
//判断
if(name==null||"
.equals(name)){
name="
//默认配置到成功界面
}
//把结果放置到mapping的ActionMapping中
mapping.addResult(name,redirectUrl);
}
//包当前的Action对象放置到集合中
actionMappings.put(mapping.getName(),mapping);
System.out.println();
System.out.println("
--------------------------------------------"
for(Stringkey:
actionMappings.keySet()){
System.out.println(key+"
----"
+actionMappings.get(key).getName()+"
--"
+actionMappings.get(key).getClassName());
}catch(Exceptione){
读取配置文件有错!
请查看!
..."
*根据action的名称获取actionMapping对象
*@paramactionNames
publicActionMappinggetActionMappingByName(StringactionName)throwsException{
if(actionName==null||actionName.isEmpty()){
returnnull;
ActionMappingmapping=this.actionMappings.get(actionName);
if(mapping==null){
thrownewException("
系统找不到:
["
+actionName+"
],情检查配置文件!
returnmapping;
第6步:
配置中央处理器
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletConfig;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
publicclassActionServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
privateActionMappingManagermappingManager;
publicActionServlet(){
super();
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//获取一个ActionMapping对象
ActionMappingmapping=null;
mapping=this.getActionMapping(request);
}catch(Exceptione1){
e1.printStackTrace();
//获取一个Action类型的对象
Actionaction=ActionManager.getAction(mapping.getClassName());
Stringresult=action.execute(request,response);
if(result==null){
response.sendError(404,"
未配置Action的result页面!
response.sendRedirect(mapping.getResultMap().get(result));
response.sendError(500,"
异常,请联系管理员!
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
doGet(request,response);
*加载配置文件
publicvoidinit(ServletConfigconfig)throwsServletException{
StringconfigName=config.getInitParameter("
config"
StringconfigNames[]=null;
if(configName==null||configName.isEmpty()){
configNames=newString[]{"
mystruts.xml"
};
configNames=configName.split("
"
//加载所有的配置文件
mappingManager=newActionMappingManager(configNames);
*获取ActionMapping的对象类
*@paramrequest
*@throwsException
publicActionMappinggetActionMapping(HttpServletRequestrequest)throwsException{
//获取请求的URL路径
Stringuri=request.getRequestURL().toString();
//获取上下文路径
StringcontextPath=request.getContextPath();
//截取路径
StringactionPath=uri.substring(uri.lastIndexOf("
//获取action的名称
StringactionName=actionPath.substring(1,actionPath.lastIndexOf('
.'
)).trim();
mapping=this.mappingManager.getActionMappingByName(actionName);
获取ActionMapping的对象类出错了!
----ActionServlet"
throwe;
第7步完善web.xml配置文件
web-appversion="
3.0"
xmlns="
xmlns:
xsi="
http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
display-name>
/display-name>
servlet>
servlet-name>
ActionServlet<
/servlet-name>
servlet-class>
.hx.framework.ActionServlet<
/servlet-class>
init-param>
param-name>
config<
/param-name>
param-value>
mystruts.xml<
/param-value>
/init-param>
load-on-startup>
0<
/load-on-startup>
/servlet>
servlet-mapping>
url-pattern>
*.action<
/url-pattern>
/servlet-mapping>
welcome-file-list>
welcome-file>
index.jsp<
/welcome-file>
/welcome-file-list>
/web-app>
第8步配置添加登录LoginAction处理类
packagecom.bdqn.actions;
import.hx.framework.Action;
publicclassLoginActionimplementsAction{
@Override
publicStringexecute(HttpServletRequestrequest,
HttpServletResponseresponse)throwsException{
StringuserName=request.getParameter("
userName"
StringuserPwd=request.getParameter("
userPwd"
if("
jack"
.equals(userName)&
&
123"
.equals(userPwd)){
returnAction.SUCCESS;
return"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- struts2 自定义 框架