您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > 实验一 Struts2的应用
1实验一Struts2的应用实验步骤:一、准备工作1.创建一个Web工程,名称为TestStruts2。2.添加Struts2功能:MyEclipe-Capibilities-AddStruts;选择struts2.1二、添加组件1.创建Action先建一个名为com.jee的包,通过继承ActionSupport新建一个名为LoginAction的java类,用来处理登陆请求。//LoginAction.javapackagecom.jee;importcom.opensymphony.xwork2.ActionSupport;importcom.opensymphony.xwork2.ActionContext;2publicclassLoginActionextendsActionSupport{privatestaticfinallongserialVersionUID=1L;privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringexecute()throwsException{/*判断用户名和密码,这里是固定的(scott,tiger),以后会根据数据库来验证*/if(getUsername().equals(scott)&&getPassword().equals(tiger)){ActionContext.getContext().put(user1,getUsername());//user1是新定义的变量,在welcome.jsp中可访问其值ActionContext.getContext().getSession().put(user1,getUsername());//本句与上句的作用完全相同returnSUCCESS;3}else{returnERROR;}}}2.创建配置和消息资源文件(1)配置前端控制器在web.xml中配置一个名为struts2的过滤器:?xmlversion=1.0encoding=UTF-8?web-appversion=2.5xmlns=:xsi=:schemaLocation=://java.sun.com/xml/ns/javaee/web-app_2_5.xsdwelcome-file-listwelcome-fileindex.jsp/welcome-file/welcome-file-listfilterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mapping/web-app(2)在src下新建三个文件:struts.xml—配置actionstruts.properties—定义全局或局部属性messageResource_zh_CN.properties—定义消息资源。这三个文件的具体配置如下://struts.xml,该文件的框架是添加Struts2以后自动生成的。?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC4-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN=jeeextends=struts-defaultactionname=loginclass=com.jee.LoginActionresultname=input/login.jsp/resultresultname=error/error.jsp/resultresultname=success/welcome.jsp/result/action/package/struts注释:这是Struts2的关键配置文件,几点说明:(1)package指出包名和扩展的xml文件,这里用的是默认的struts-default,包内可以包含多个action。(2)action标签定义action,相当于servlet。(3)action里的result元素定义action处理完后的跳转。以后会添加更多复杂的配置信息。所有的属性文件通过新建file得到。在创建struts.properties文件时,指定file的名为struts.properties,其中配置国际化信息文件。5单击add按钮,弹出添加属性的对话框,一次添加一对。产生的原文件内容为:struts.custom.i18n.resources=messageResource用类似的方法建立文件messageResource_zh_CN.properties//messageResource_zh_CN.properties,配置具体的国际化对应信息,这里只列出了中文。loginPage=登录页面errorPage=错误页面succPage=成功页面failTip=对不起,您不能登录!用户名或密码错误!succTip=欢迎,${0},您已经登录!user=用户名pass=密码6login=登录user.required=用户名必须输入!pass.required=密码必须输入!3.创建JSP。在../WebRoot/下创建三个JSP文件:index.jsp—登录页面welcome.jsp—登录成功的返回页面error.jsp—登录失败的返回页面。//index.jsp登录页面%@pagelanguage=javacontentType=text/html;charset=UTF-8%%@taglibprefix=suri=/struts-tags%htmlheadtitles:textname=loginPage//title/headbody//用户测试的用户名和密码分别为:wangwei,123456brs:formaction=logins:textfieldname=usernamekey=user/s:passwordname=passwordkey=pass/s:submitkey=login//s:form/body/html//welcome.jsp登录成功跳转的页面%@pagelanguage=javaimport=com.opensymphony.xwork2.ActionContextcontentType=text/html;charset=UTF-8%%@taglibprefix=suri=/struts-tags%htmlheadtitles:textname=succPage//title/head7body第一种获取用户名的方法:br欢迎,s:propertyvalue=username/br!--登录的用户名--第二种获取用户名的方法:br用户名:%=ActionContext.getContext().get(user1)%/body/html//error.jsp登录错误的页面完整的项目结构如下:三、部署工程四、启动服务器,打开浏览器对登录功能进行测试。8五、总结Struts2是一个非常优秀的MVC框架,有很多优势,其配置文件灵活、简洁,功能加强大,特别是其简单易用、功能强大的标签库,具体的知识请查阅相关资料和老师课堂讲解。第一轮改进,增加业务逻辑组件。一、创建业务逻辑组件1.新建包com.bean2.在com.bean中新建业务逻辑组件Bean—User.javapackagecom.bean;publicclassUser{privateStringname;privateStringpassword;publicUser(){}publicUser(Stringname,Stringpassword){this.name=name;this.password=password;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}}二、修改控制器组件将Action修改成如下代码:packagecom.jee;importcom.opensymphony.xwork2.ActionSupport;9importcom.bean.User;publicclassLoginActionextendsActionSupport{privateUserusr;publicUsergetUsr(){returnusr;}publicvoidsetUsr(Userusr){if(usr==null)usr=newUser();this.usr=usr;}publicStringexecute()throwsException{/*判断用户名和密码,这里是固定的(先用英文账号scott,tiger),以后会根据数据库来验证*/if(usr.getName().equals(scott)&&usr.getPassword().equals(tiger)){returnSUCCESS;}else{returnERROR;}}}10//这个Action的属性也作为页面输入的属性说明:(1)LoginAction类中定义了登录页面中出现的VO对象usr之相关属性的get、set方法。按OGNL和Struts2的框架要求,在表单提交时,通过表达式语言(EL)usr.name和usr.password访问对象数据成员的Action,在经过struts过滤器时,其容器会自动调用getUsr()方法和“usr”这个成员变量。由于usr是User类的一个对象,它本身还有name等属性,因此struts还会自动调用该对象的“setName”方法,为name属性赋值,Struts2通过这种方式完成参数的传递,在User类的定义中相应成员变量必须有get、set方法。其中“usr.name”是表达式语言(ExpressionLanguage,简称为EL)中的语句。表达式语言由XWork框架提供支持,XWork表达式语言的核心是OGNL(ObjectGraphNotationLanguage),OGNL是一种功能强大,技术成熟,应用广泛的表达式语言。用
本文标题:实验一 Struts2的应用
链接地址:https://www.777doc.com/doc-3377804 .html