Struts应用实例.docx
- 文档编号:24581527
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:45
- 大小:32.72KB
Struts应用实例.docx
《Struts应用实例.docx》由会员分享,可在线阅读,更多相关《Struts应用实例.docx(45页珍藏版)》请在冰豆网上搜索。
Struts应用实例
体验Struts
(1)---用户登陆的实现
看到题目,您一定觉得很土,Struts早已风靡,而关于Stuts的文章也早已遍地都是,如果你觉得土那你就别看了,我只是把我这段时间学到的一些比较肤浅知识在这里记录一下,如果您真在这些连载文章中获得了您想要的知识,那么我就会很欣慰了。
这不快毕业了吗?
我选的题目就和Struts有关,做一个关于学校的毕业设计选题系统,就是B/S结构,访问数据库的一些俗套的东西,为了巩固我这段时间学习Struts,我把这个系统竟往难里做,这样对我这个动手能力差的人,实际工作经验少的人来说,会有点帮助吧?
当初就是这样想的,所以就开始了我的Struts之旅。
那我就从我的第一页讲起吧,当然第一页一般都是登陆,至于怎么配置Struts,您还是参考一些别人的文章吧,我觉得写这些就够土的了,写怎么配置,怎么实现就更土!
<%@pagecontentType="text/html;charset=gb2312"%>
<%@tagliburi="/WEB-INF/struts-bean.tld"prefix="bean"%>
<%@tagliburi="/WEB-INF/struts-html.tld"prefix="html"%>
javascriptdynamicJavascript="true"staticJavascript="true"formName="LoginForm"/>这句是生成验证登陆表单所需要的js代码 formaction="/ajax.do? method=login"onsubmit="returnvalidateLoginForm(this)"> 用户名: textproperty="user"size="16"maxlength="16"/> 密码: passwordproperty="password"size="16"maxlength="16"/> submitstyleClass="loginbutton"property="submit"value="登陆"/> buttonproperty="reg"styleClass="loginbutton" onclick="window.location='ajax.do? method=register'"value="注册"/> errorsproperty="user"/> errorsproperty="password"/> form> 把控制格式的HTML删除掉,应该剩下这些就是主干了,对于这个毕业设计选题系统,有三种角色,管理员(Admin),教师(Teacher),学生(Student)而我把他们的登陆都做到了一起,在后台这三种角色也是都放在了一个表中,对于他们这三种对象,都是继承于Person的类,所以在登陆时可以忽视他们的具体角色,用多态来实现登陆。 action="/ajax.do? method=login": 将一些关于登陆啊,注册的一些乱七八糟的操作我都放到了一个DispatchAction,之后可以用method的不同来分别调用不同的功能。 onsubmit="returnvalidateLoginForm(this)": 这个是用来实现Struts自带的validate验证 errorsproperty="user"/> errorsproperty="password"/>: 是用来显示在登陆时的错误信息 在这里需要的Struts相关配置会有如下的几个方面: 首先是要对配置文件进行配置我们登陆时需要的FormBean和Action (1)struts-config.xml: (2)validation.xml: 这里是常量配置,因为我们还会需要到用户名的验证,所以把他设置为了常量 下面是对这个bean的具体严整手段了,按字段field分别来写他们所依赖depaends的检验手段,常用的有必须填required,正则表达式验证mask,最大maxlength和最小minlength minlength}"resource="false"/> maxlength}"resource="false"/> 以上三部分构成了js的一条错误提示,以下是具体的严整规则了 depends="required,mask,minlength,maxlength"> minlength}" resource="false"/> maxlength}" resource="false"/> 对于我们需要的FormBean是这样写的: packagecom.boya.subject.view; importjavax.servlet.http.HttpServletRequest; importorg.apache.struts.action.*; publicclassLoginFormextendsActionForm { privatestaticfinallongserialVersionUID=1L; privateStringuser=null; privateStringpassword=null; publicStringgetPassword() { returnpassword; } publicvoidsetPassword(Stringpassword) { this.password=password; } publicStringgetUser() { returnuser; } publicvoidsetUser(Stringuser) { this.user=user; } publicvoidreset(ActionMappingmapping,HttpServletRequestrequest) { this.password=null;这里很重要,当用户输入有错时,需要返回登陆界面给用户,为了用户填写方便我们可以设置返回给用户的哪部分信息设置为空 } } 我用来实现登陆的DispatchAction代码如下: publicActionForwardlogin(ActionMappingmapping,ActionFormform, HttpServletRequestreq,HttpServletResponseres)throwsException { Serviceservice=getService();调用业务逻辑 LoginFormloginForm=(LoginForm)form;获取formbean Stringuser=loginForm.getUser();提取用户名 Personperson=service.getUser(user);从业务逻辑中查找用户 ActionMessagesmessages=newActionMessages(); ActionMessageam; if(person==null)如果用户不存在,我们就返回 { am=newActionMessage("index.jsp.fail.user",user);参数的意义: 第一个是主串,而后面的作为arg数组 messages.add("user",am);把错误信息放到errors属性为user那里去显示 saveErrors(req,messages); form.reset(mapping,req);如果出现错误,调用formbean的重置功能 returnmapping.findForward(ID.FAIL); } if(! person.getPassword().equals(loginForm.getPassword()))如果密码不一致 { am=newActionMessage("index.jsp.fail.password",user); messages.add("password",am); saveErrors(req,messages); form.reset(mapping,req); returnmapping.findForward(ID.FAIL); } setSessionObject(req,person.getType(),person);把用户放到session里 returnnewActionForward(person.getType()+".do",true);我在每个类型用户的类中加入了一个getType来在这里调用,之后动态的去对应的admin.do,student.do,teacher.do的主页面,并且这里实现的不是请求转发,而是请求从定向 } 体验Struts (2)整体结构 为了让大家更方便的了解我这个设计,我先把我的一些整体的规划都说出来吧,由于我是初学,难免会参照本书籍来看,我买的是那本孙某女的书《精通: *****》,看了看她前面的介绍,我一看了不得,能出书,写的还都不错,这女的可不得了,渐渐疑惑的地方非常多,比如例子里面注释都拽上了英语,搞不懂,而当我从网上下到电子盗版jakartastruts(我已安下栽说明要求的那样在24小时后删除了)这本书的时候我才恍然大悟,原来是抄袭啊? 至于是谁抄的谁,口说无凭,不能乱诽谤,不过大家心里都该有杆称! 下面就是代码了: packagecom.boya.subject.model; publicinterfacePerson { publicLonggetId(); publicvoidsetId(Longid); publicStringgetName(); publicvoidsetName(Stringname); publicStringgetPassword(); publicvoidsetPassword(Stringpassword); publicStringgetTelphone(); publicvoidsetTelphone(Stringtelphone); publicStringgetUser(); publicvoidsetUser(Stringuser); publicStringgetType(); } packagecom.boya.subject.model; publicabstractclassUserimplementsPerson { privateLongid;数据库id privateStringuser;用户名 privateStringpassword;密码 privateStringname;姓名 privateStringtelphone;电话 publicLonggetId() { returnid; } publicvoidsetId(Longid) { this.id=id; } publicStringgetName() { returnname; } publicvoidsetName(Stringname) { this.name=name; } publicStringgetPassword() { returnpassword; } publicvoidsetPassword(Stringpassword) { this.password=password; } publicStringgetTelphone() { returntelphone; } publicvoidsetTelphone(Stringtelphone) { this.telphone=telphone; } publicStringgetUser() { returnuser; } publicvoidsetUser(Stringuser) { this.user=user; } } packagecom.boya.subject.model; publicclassAdminextendsUser { privateStringgrade=null;管理员权限 publicStringgetGrade() { returngrade; } publicvoidsetGrade(Stringgrade) { this.grade=grade; } publicStringgetType() { return"admin"; } } packagecom.boya.subject.model; publicclassTeacherextendsUser { privateStringlevel;教师职称 publicStringgetLevel() { returnlevel; } publicvoidsetLevel(Stringlevel) { this.level=level; } publicStringgetType() { return"teacher"; } } packagecom.boya.subject.model; publicclassStudentextendsUser { privateStringsn;学生学号 privateSchoolClassschoolClass;班级 publicSchoolClassgetSchoolClass() { returnschoolClass; } publicvoidsetSchoolClass(SchoolClassschoolClass) { this.schoolClass=schoolClass; } publicStringgetSn() { returnsn; } publicvoidsetSn(Stringsn) { this.sn=sn; } publicStringgetType() { return"student"; } } 而对于Action我分别做了一个抽象类,之后别的从这里继承 先是Action的 packagecom.boya.subject.controller; importjava.io.IOException; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importjavax.servlet.http.HttpSession; importorg.apache.struts.action.Action; importorg.apache.struts.action.ActionForm; importorg.apache.struts.action.ActionForward; importorg.apache.struts.action.ActionMapping; importcom.boya.subject.frame.ID; importcom.boya.subject
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts 应用 实例