struts1第二课.docx
- 文档编号:5747116
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:16
- 大小:361.67KB
struts1第二课.docx
《struts1第二课.docx》由会员分享,可在线阅读,更多相关《struts1第二课.docx(16页珍藏版)》请在冰豆网上搜索。
struts1第二课
第一讲Struts开发步骤
一、新建web工程,引入struts1.2的组件包
二、打开struts-config.xml文件,通过设计视图创建实体类(FormBean类),
新建formBean如下图所示:
点add按钮加入属性
三、在struts-config.xml文件的设计视图,开始设计访问流程
1、建立自定义的Action必须继承自Action
2、当此action处理请求以后跳转的下一个路径,整个流程图如下所示:
此导航图对应的xml源代码如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.2//EN""http:
//struts.apache.org/dtds/struts-config_1_2.dtd">
attribute="userForm" input="/login.jsp" name="userForm" path="/check" scope="request" type="com.zhhlk.struts.action.CheckAction" validate="false"> name="loginok" path="/loginok.jsp" contextRelative="true"/> name="fail" path="/fail.jsp" contextRelative="true"/>
在login.jsp页面通过check.do提交表单数据到CheckAction进行处理,在CheckAction中需要重写execute方法,在此方法中接收用户的请求,接收到以后对请求进行处理,获取actionform对象,此ActionForm就是UserForm对象,此form对象中已经封装了用户的请求信息。
实际上就是将表单元素的值传递给了UserFrom对象。
在action的execute方法中对userfrom对象进行验证.业务代码如下:
packagecom.zhhlk.struts.action;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.struts.action.Action;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionForward;
importorg.apache.struts.action.ActionMapping;
importcom.zhhlk.struts.form.UserForm;
/**
*
*XDocletdefinition:
*@struts.actionpath="/check"name="userForm"input="/login.jsp"scope="request"
*/
publicclassCheckActionextendsAction{
/**
*Methodexecute
*@parammapping
*@paramform
*@paramrequest
*@paramresponse
*@returnActionForward
*/
publicActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse){
UserFormuserForm=(UserForm)form;//TODOAuto-generatedmethodstub
if(userForm==null){
returnmapping.findForward("fail");
}
if(userForm.getUname()!
=null&&!
userForm.getUname().equals("")&&userForm.getPasswd()!
=null&&!
userForm.getPasswd().equals("")){
returnmapping.findForward("loginok");
}
returnmapping.findForward("fail");
}
}
在execute方法中传递了四个参数,四个参数的意义如下:
(1)、ActionMapping-实现跳转到指定的路径,对应的是struts-config.xml文件的
(2)ActionForm—>实体类对象,由struts容器创建,用于封装jsp页面提交的表单元素或请求的信息。
ActionForm当中的属性名称必须要与jsp页面的表单元素的名称保持一致(一样),且属性要大于或等于表单元素的个数,继承自ActionForm类.
(3)HttpServletRequest-请求对象,由web容器创建
(4)HttpServletResponse响应对象,由web容器创建
四、编写jsp页面,页面的规范如下:
<%@pagelanguage="java"pageEncoding="UTF-8"%>
<%@tagliburi="http:
//struts.apache.org/tags-bean"prefix="bean"%>
<%@tagliburi="http:
//struts.apache.org/tags-html"prefix="html"%>
<%@tagliburi="http:
//struts.apache.org/tags-logic"prefix="logic"%>
<%@tagliburi="http:
//struts.apache.org/tags-tiles"prefix="tiles"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
htmllang="true">
base/>
登陆
formaction="check.do"method="post"> 账号: textproperty="uname"/> 密码: passwordproperty="passwd"/> submitvalue="提交"/> resetvalue="重置"/> form> html> 在jsp页面使用了struts的html标签以后, form>标签中不能出现name属性,因为在struts的html标签中name属性表示作用域的名称。 Form表单的名称与action节点的name属性名称一致。 第二部分动态的(DynaActionForm)ActionForm 一、在当前的web工程中创建实体类UserBean类(此web工程已经引入了Struts组件包) 二、将创建的UserBean类定义为动态的FormBean的属性 具体的配置代码如下: Struts-config.xml文件中的导航如下: Struts-config.xml文件的配置导航源码如下: xmlversion="1.0"encoding="UTF-8"? > DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.2//EN""http: //struts.apache.org/dtds/struts-config_1_2.dtd"> attribute="userForm" input="/login.jsp" name="userForm" path="/check" scope="request" type="com.zhhlk.struts.action.CheckAction" validate="false"> name="loginok" path="/loginok.jsp" contextRelative="true"/> name="fail" path="/fail.jsp" contextRelative="true"/> 在action中对动态formbean的对象处理如下: /* *GeneratedbyMyEclipseStruts *Templatepath: templates/java/JavaClass.vtl */ packagecom.zhhlk.struts.action; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importorg.apache.struts.action.Action; importorg.apache.struts.action.ActionForm; importorg.apache.struts.action.ActionForward; importorg.apache.struts.action.ActionMapping; importorg.apache.struts.action.DynaActionForm; importcom.bean.UserBean; publicclassCheckActionextendsAction{ /** *Methodexecute *@parammapping *@paramform *@paramrequest *@paramresponse *@returnActionForward */ publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ DynaActionFormuserForm=(DynaActionForm)form;//TODOAuto-generatedmethodstub //通过DynaActionForm对象获取UserBean对象的属性 UserBeanub=(UserBean)userForm.get("ubean"); if(ub==null){ returnmapping.findForward("fail"); } if(ub.getUname()! =null&&ub.getPasswd()! =null&&! ub.getUname().equals("")&&! ub.getPasswd().equals("")){ returnmapping.findForward("loginok"); } returnnull; } } 通过UserBeanub=(UserBean)userForm.get("ubean");获取UserBean对象,ubean参数表示配置在struts-config.xml文件中: 三、在jsp页面对动态form中的ubean属性进行访问 <%@pagelanguage="java"pageEncoding="UTF-8"%> <%@tagliburi="http: //struts.apache.org/tags-bean"prefix="bean"%> <%@tagliburi="http: //struts.apache.org/tags-html"prefix="html"%> <%@tagliburi="http: //struts.apache.org/tags-logic"prefix="logic"%> <%@tagliburi="http: //struts.apache.org/tags-tiles"prefix="tiles"%> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> htmllang="true"> base/> -- --> 用户登录 formaction="check.do"method="post"> 账号: textproperty="ubean.uname"/> 密码: passwordproperty="ubean.passwd"/> submitvalue="提交"/> resetvalue="重置"/> form> html> (1)使用struts的html标签获取动态formBean中的对象属性需要做以下的规范(login.jsp页面): textproperty="ubean.uname"/>通过子属性ubean设置属性uname的值. Ubean是动态form(UserForm)的子属性。 (2)在action的execute方法中通过动态Formbean对象的get(“子属性名”),获取对象. UserBeanub=(UserBean)userForm.get("ubean"); (3)向动态的formBean中设置属性采用以下方式(action中): userForm.set("ubean",ub); (4)在jsp页面访问动态formBean中的对象属性如下(loginok.jsp): writename="userForm"property="ubean.uname"/> 测试结果如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- struts1 第二