版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、纟M登录4SqlServeiOOS的流龜1) 拷贝下面所说的.java文件,9个java文件和相应的包名,这些都是大果任封装好的文 件,可以直接用。2)dao 包里面有: Dao.java 还有一个 impl 包:IDao.javaman ager包里 面 有:IBaseMa nager.javaIMa nager.javalUserLogi nMan ager.java还有一个 impl 包: BaseManager.javastruts包里面有:Applicati on Rperties还有一个 action 包: BaseActi on .java lAction
2、 .javautils包里面有:MyActio nProxy.java ObjectUtils.java再把Iperties 贴到src包下面。2)把 applicati onCon text.xmlspri ng-form.tldspri ng.tldstruts-bea n.tldstruts-c on fig.xmlstruts-html.tldstruts-logic.tldstruts-nested.tldstruts-tiles.tldvalidator-rules.xmlweb.xml这些以前写过的都可以贴过来,你可以直接把这个项目里的都贴过去, 以后就直接在这里
3、该代码就行了。以上两个步骤样就是为了完成手写SSH代码3)新建一个pojo包:先让|:J1这个类实现序列接口如:r. Id gener ator-c la3s = r,irLtiyrrpublic Integer getld) return id;然后写相应的字段:卫rivate IjiLeger id; private String username; priyitt 寸匚匚in枣 戸氓吕珂口匚口孑ulAic void. set Id. ( Integer id) trJllS ! id = id;4)为了更够生成iT所以为每一个字段写出相应的元数据:说明:利用hibernate 生成Use
4、rLogin表。2字段id的映射,元数据要写在get ()方法前面:创建一个实体:利用get和set方法生成每个字段的get()和set()。例如:1.生成相应的表:paukaije pojo;public dLass UserLogin iinlementE j- ic , Ser is 1 i zak lepubXlc void 3亡匸Hd (Tire亡guf Id.) TuliJ-ic I nt eger g e 11 d (J s tiibernate. c 1Q3SUseisLoliithis . 1 d = id;retain id;3 j J VerLogin. j va3. 字
5、段username的映射,元数据要写在get ()方法前面:not-null=rpf alse w* (Slii-ljern-ate . property 0011111111=iis&rnameF, Upublic Str ing getUoername () return username;public void setUsetzname (String user name) lliis usernime = usu 匚 name;)4. 字段password的映射,元数据要写在get ()方法前面:not-nu 11= Mf ala erp* hxberjiait e pxcpcrty
6、colwnn=:vrpassuordPIP lengrt-h,= ,rZ0 */puliXlc String getPassword ()return passuorci;public void setFasswoizd (String password) this . pas sword = rassuorti;这样这个 UserLogin.java就完成了。5)右键项目名称找到“属性”选项:运行方式 调倉方式 槪要分析方式小姐比辕对象) 从亦地历史记录製原). MyE clipsPBE工耳辺JI性(K)Al-t+Enter找到:XDoclet点击这个出来相应的界面:XDiiiJhI-1 e
7、si Lr Color Cczist. w- Tsvi輪崖炎 r-i二tm优阿吟式代记模檢 将式化程序 爼架导入 j3Vi糧建棒轻 jsvlCC opticus - JSViliJC TS3 JyEjLiji-JTJf Pz eiklz Talk T鼻的3IiCenfi 申就 i qt, | 3uild |Ilgfiji tEia UlozlEt Eiorifi BratL mg: a.Teilt.ble oor geer&UClL 回| I刁 SXaalar 1 KiberxLt#UML坝忖用1JI 2d确定 取沱Aid StindarA.单击按钮,Ki bornateStandard JT
8、OSandlaz-d JMKStandard PortletSt=axidrd. W elb2dw I! aias! wf r treWf= 111 1! ! w! i !1 1 i =rr9 wr rmmwnStandard JJQPI SI! - ?! TSI f SI I! B I ! T=- ! ! B S I ! n! S - ! H ! ! I ! T! U-T ? B I S ! I tStaitdard eaitliifA确定取消Standard ITBStaiLl&rd HiferrtatfiStandflrd JTO Standu-d JNX Standsrd fortle
9、t StuLdard WebS i iniar d AOP Stsndard Bnln toStuidurd I JI确定取消出现:5 3sk-ienElf 的届tt|口| 乂XDcclet信息Dei zjlet C ivIqx C ?ui IEl 廉谨器 e jHvi代咼世武榕式井稈序:删导入_:-JasralX optc on?:Jwa.dlic 住_芝 自 MyElipJT?勺里屯匸Tau=lc Tis 匡 Vai i cat i j XDlctUHLi-Z枸连蔓项目弓用11点击“确定”按钮。6)右键项目名称:Cc-nfiW4ti mn | timid Dei ne tlie !011,
10、 coef j 玉wt j d口工 a.rilalil gr gexier n,t i on.e -KBXSK3臼密 ki lca.an it cdo 1 e 0 fig応 L 0 O hib$” 自“El /l_ .$ src3 + c白e n :$ i 1 i 11 e s.Spring Capabilities,.JPA Capabili 1141. . BJZVJSTL Librari es.Hibernate Capabilities.Run XDoclet.血匝皿Eg 會尼佥Xl?o匚I刖石4娥到心查询更茅词典搜索因特网Run ValidateExclude FrorM W4ge
11、VQiRmv All Validation Hurkari执行Run XDocle后只要出现:ng imiicux- l Ari vuioii! n 5?V,i?UL!tW V-yyiFWinIIVV t_.mjEui2if lie ; C: DocuKnt3 sildI Settd.nqs AJminL3tra.bqh 2 ?XmviFDr k JSP ?、. xdocl亡t -kuildi. tzrgs meiI KS54jQ;|hilb er iiat edoz Let i; SD dc let Ha lil4*7 | RLmnin hibe m6it ehlb er siat edoz
12、; 1 11 Generfiitmg raaping file lor jojo U 目注 rLogXruhiber astedos 1 #tpojo - UsmLeguixdoelt_gni*r nt ion_:SUIL SlKCHrULTnEsil tlvne? S冒旦住口询且就说明你的UserLogin类的 匸-”“丨创建成功了! !7)新建一个 UserLogin.jsp 的页面(带Form的那种页面):File Pa:/ssbdenglu/WebRootFile Nams:刖JspjspTerriplate to use;圍tandard J5P using Struts 1何th
13、a formBrowse-.生成相应的页面后把属性名称,改成:text propei7ty= F,usemanaerr匕七 dPassucicd = -htinL ; password p匸。卫:匚匸尸口戸巴戸可口匸口给相应的action后面添加一个名字,指明提交表单后走哪个.do如:8)找到s truB-config, xml双击:在代码fiCt i&n-iaappitigs标签中手写action(就是上面表单提交后的那个/*.do)act ion name* UserLoglnForm* path-r/ UserLcginM paramecer-check validater,falger
14、r seope= ,fre(iuascrritype = rfs匸匚ut s act ion UserLocjinAu匕 ion1*-/f or war d A orwar name=rrIailedr, patli=/failedw/fcxwardAneaie=use匚Lq诃inF口匸oi type= poja/说明:根据jsp页面提交的/UserLogin.do 找到struts-config.xml 里面的path属性, 根据name属性找到form-bean标签里的name属性,以及它对应的type属性,type属性写的就是pojo类中UserLogin的全名(包括包名和类名),Par
15、ameter属性是说明表单提交后要执行check方法,Validate= ” false ”属性说明不使用表单验证框架,Scope=” request ” 说明作用域是 request ,Type=”属性写得就是你一会要创建的UserLoginAction 的全名(包括包名和类名),Forword标签就是说明要是 check成功后跳转success.jspj ,失败就跳转failed.jsp 页面。9)根据上面的xml文件我们创建相应的.java类和相应的jsp页面。在 action包里面创建一个在Web-Root下创建一个普通的11 页面。在manager包里的impl包里面创建一个 Use
16、rLoginManager.java文件:!* managerj + impl$ 2 6aseManager.ja?dLlserLDginManaqer Java卜迎在 manager包下创建一个接口lUserLoginManager.java文件:ft-manager卯:- J_ BseMnager.java _ UerLaginMariger.test TesLjavaUsEir LogiriManager .iiavaManager, jaa10)在 lUserLoginManager.java接口中写:EJuJjlic altstrajct String check (UserLcgi
17、n user inf );写这个方法,因为我们要在业务逻辑层UserLoginManager.java 中写check()方法和hql语句进行检查用户登录名称和密码是否正确,而UserLogi nMan ager.java 是实现IUserLoginManager.java 接口的所以就要在这里写这个方法。还有一个原因是这是ssh项目用到了 Spring,Spring的优点就是让类去实现接口,体现了解耦合的好处。11)在业务逻辑层 UserLogi nMan ager.java中写:public classextends EaseHarjagei inclements IUseiloqirJI
18、anager 让这个类继承BaseManager(泛型的 BaseManager)还要实现刚才写的那个IuserLogi nMan ager 接口。在这个类里面写public String check (tlserLagin user inf ) 这个check()方法是用来检查用户在登陆页面的时候登录名和登录密码是否与数据库 里的一致。具体方法如图:String hql=,rfroni UeLogin u uhete uusername=? and u* password? r; Qbject valuesnev Object 2;values 0 = us er info. ger. Us
19、er name ():valuer LJ =user luXq gevFaswarti ();List list dao. f indByHtjl (hql t values);(list != mil1& 1igt.sise(0)return SUCESS;elsereturn FATLEJ说明: trill 臥 tLCl = irrroin User Log in u where u_ useriiainie=? snd n. passuord.= ?,r;就是一个传给数据库的hql(hibernate查询语言)语句。Otoj eC:t values=new Otoject 2;val u
20、.es =VLser info .get User name ( valu.es 1 =Liserinf o . get Pas s wo r d ();就是一个对象数组,数组下标从0开始,values0表示的获取用户名的值values1表示的是获取用户密码的值注意:刚才的hql语句第一个是 u.username= ?贝9 values0就是获取username的值; 如果第一个是 u.password= ?贝9 values0 就是获取 password的值。一定要注意位置写反了就永远查不出来了。LList-= 厲旦口. f indSyHql (hqlr values);利用dao调用fin
21、dByHql() 方法,里面参数hql(刚才的String hql)和values(刚才的 对象数组)。返回的结果用List list 来接(泛型版本的)。iz (.1 lst ! = mil 1 忌屋 Lrst. sise () !0J return. S If CESS; ej_jse vcturn FAILED;就是如果list不为空而且里面有相应的数据(也就是list的大小0)就说明查询成功返回success 否则就返回failed12) 在中写代码:让此类继承 BaseActio nvUserLogi n,再把IUserLogi nMan ager接口作为字段生成set方法,再添加c
22、heck方法(添加未实现方法还要改名为check方法)。具体代码如下图:fir i vAtTUs e-rLeg inMsi nags rluaerlo g i mre na ger:pruj-Lic /cid 5ec loser logimnaiiager (lUserLogrinfianager ins er log lniuanaer I user Log! rmanager = iiiser logi Emanage c ;uhJJLc A,ctioiiFo匚 btol匸d check (Act ionllappinig, ar号口亍 ActicnFo匚m acg 1 rHttpoerv
23、 let Re quest arg2, B11 pS e r v le t Rs sp osnse arg3 J throws ExceptiontngerLofjin user loain = hf*w iTserLocrin () jEconVt iLn 8 1:口口口彗in argl) tre tiLAii ax CO 丄EaIFqem旨lIusin直ugJjMiSU曾甘启!; UhEGlc (U3亘E Jldgln);说明:把lUserLoginManager接口作为字段(这是一种设计模式叫做简单工厂。)在check()方法中:先实例化 UserLogin,利用 BeanUtils 的
24、 copyProperties(实例 userlogin,ActionForm 的arg1)方法,就是把ActionForm的实例arg1得到的实体(从页面得到的用户输入的用户名 和密码)整个拷贝给实例 userlogin 。返 回 Actio nMap pi ng的实例 argO 的 fin dForward( 接口 的实例.check(实例userlogi n) 方法。13)找到印 p lie ationCo ntext .ml修改代码:1. 弋丄ist- pojc/Us er Login, htuti. xml/prapec匸yn写上自己写的映射文件名称和路径。heaa id-FF&ao
25、r, class-r,dac. impl.ref LocalHSe53ionFacto匚/ property2.检查 C/B色注肚中的包名类名是否一致,如果一致就不用修改。相应的包名类名和自己的项目3. /JiSolJertV iLSiwe- f,dao,r把写的UserLoginManager注入到Spring 里面去。4.把 UserLoginAction注入到 Spring 里面去。14)在八 中写一个链接说明:登陆成功后进入success.jsp 会显示相应的链接3 href - fFc:hecfc, doMcha xu 口 / 如果登录失败就会显示 404错误/failed.do 1
26、5)在 manager包里面创建一个 test包在创建一个带有 main()方法的test类: ii managerj ;弓 impl卜T| BaseManager.ja;= J UserLoginMareger.jova testJest javaI GaseManag er. javaIMdreernjavdI UserLog inM ansgr.写这个测试类就是为了利用for循环在表里插入相应的数据i值是可以变的,在SqlServer2005中光新建一个数据库sshdenglu就行了,它可以生成UserLogin表里面还有循环插入的数据。、宀 亠 jpplicatkinCortext.
27、x 亠注意:在中vproperty n ame=urlvalue=jdbc:sqlserver:/:1433;databaseName=sshdenglu 数据库的名称和你新建数据库的名称一样就行了。写如下代码:public static vd14 ftan:(String argg) Fanfactarv 加就弘:FiLe573tEir2iiUpplicatinCciitex | r,UetoRoo:/lilt -IXF a? 1 ic:ti oaContKt. n 1ri |; erLog;nJ9aLagei u5Er-;gin&nager - (UerLiiLKaxia
28、jerj beaiFset01:7.reteau(CserLinltaaag=r*|;for (int i = 0; 1 c 10; 1+) UserLogin userlojin s nnr lb 亡 Mcg in (::user login. setUsetnane (a+i);usar 1 oghi, aetPasa vord (vaar +J;ierlogi nrnarage r. save3n= (user La gi n) j:说明:0e&nFac:arV heflnFactory=naf FLleSv9temPPC3tloI1C:)nce5it?oot/WESWapplicati
29、iziiCoitMt.XMLff);因为在严弩皿5心中对于实体类pmumH的注入,所以用BeanFactory(Bean工厂)利用new 一个xml文件并把找到的 spring 的xml文件放进新 new的xml中去,这样就可以让测试类找到注入的相关东西。IserLogintoag: ise:Locimnager叮旳eiLjMi:腕1坷旳 怕an际加卩g吃洌除乩叫iiffl沏曲口;不会解释,只知道让测试类找到业务逻辑层UserLog in Ma nager的代码就是这样写。for (int 1 = Dj i 10; i+) UaErrLogin Kiseu lcgin = n eir User
30、 Log-in (); user login setUsername (,F a,r + i);user login. setFassucrd (,|haarr + i):usetr 1 cgi. s&vOiie (user login.):利用for循环往数据库里面插入数据先用实体类设置相应的数据再把实体类保存到业务逻辑层 中。16 )先测试Test,右键 main() 方法:住Add to Snippets,.|Rlti AsA L 血n 汕血忡erfllt+ShiFt+3C? RRebyg As卜Profile AsTftflm卜DAppkatioriAlt+Shift+Xj J | j
31、卜 3 Mi/Eclipcse Server A ppli cation执行后先看数据库里面是否有UserLogin表再打开表查看插入的数据是否正确!checkSucess.jsp17 )启动Tocat运行项目,登陆查看是否成功,若成功就会显示18 )点击chaxun 链接后要显示所有数据库里的东西创建一个带有表单的jsp页面然后把里面的代码都去掉写如下代码:er, 1 is c ,r-doean 戈inkisj; $beanu已亡匸巴 nbsp; ciibsp;Weanpasauord sntosj; fiWsp; finLap;a hre=,rde 1 shanc?hu4nJospj sn
32、bsp; logic : itetetc?-就是为了在查询成功页面上显示:Sfbeatiid th&an.useriiaine ) S be an. pass word 阳 anchu说明:利用logic : iterate 标签和EL表达式循环输岀数据库里面的东西:id= bean ” (bean 也以随便起名字) name= list ” (为什么见下边第 21步)beftn.id :获取 id 号码:获取用户名 ;二二 :获取密码,f : J -:;.1.通过 id 删除- I - : : - : I通过 id 更新19 )找到-d-irUsBrloginManciger1 java往里
33、面填写查询所有的方法(checkAll()public Li-st checkA.il ();20 )找到UwerL羽inM nag er j目佃也往里面写查询所有的方法(checkAll()publLc Lit checkAll :String hql=,fuoniL Lst i 1st = dao. lnclEYHql (liql, 0) ret口匸n 丄ist;return niiLL;说明:禾U用dao.findByHql()方法,传hql语句和因为没有第二个参数所以写null 还用list 来接收如果list不为空而且大小0就返回list(也就是把所有从数据库里面查到的都返回)否则返
34、回nullJ UsertoginAdtion.java21 )找到写代码,其实就把刚才写过的那个check()方法复制一下,然后改写就行了:public AptlnnForwsird check!丄1(AciLinnMappiii naripiigr ictioirorti torxi,Ht. t pServ let Bequest; reiquest HttpS er vie 匚 Rm 吕 pci ns e response throws Except ion requet.setittrlbutelULSlDgimnanaer. checkkLL (| |;return mapping 壬
35、:11111?=1匸巾&0:1(常:311二已弓5:呼);把方法名改写为checkAll()方法参数把arg0改成 mappingarg1改成formarg2改成 requestarg3改成 response用 request.setAttribute();把 Iuserloginmanager接口中的 checkAll()方法的返回值设置给list”这也就是为什么上面的第18步的页面中的name= list ”了并返回 sucess22 )找到osnn,在 中写/壬口匕381匕(1、fceiraEd name=,railed path=/fQiled1口扌卞/上口匸西匸口说明:因为在 suc
36、cess.jsp页面上写的是 cha xun所以 path= /check ” parameter checkAII (执行 checkAll 方法) 不使用验证框架作用域为 request成功返回 checkSucess.jsp失败返回failed.do23 )测试一下数据库里面的数据能否显示24 )找到IUst?rLogi nManager .pva写一个删除的方法:nuliTic hiDoluean delByld (Integer id);要利用id删除数据所以传主键id25 )找到UserLogii Manager .ja w写相应的删除方法:piiblic boolean delB
37、yld (Integer id) da.a, delete (dac. get (UseuLcgin id):return true;/return false;说明:利用dao调用delete() 方法,这个参数是一个实体,所以还要用dao.get() 获得实体,get()的需要2个参数一个是实体类一个是id所以要写成:dao.get(UserLogin.Class,id)再把它放进 dao.deiete()里面就是:dao.deiete(dao.get(UserLogi n.Class,id);这样了返回是boolean型所以返回true 。26 )找到丄心:写相应的删除方法。liuliJ
38、Lic ActlcnForword dslByld (ActiotiMairpingr tnpping-, Act lorTorin lorm,H11 r Se r v 1 et e aue 51 re xuest, H11 d Servlet les o o nse response) thrmrs EceptlonJI i-teger a t r n ng Int ege 匸.paxseZzst (request gu 匸 Pm匸鬥血匸匸亡工 f aLd*1)fir (1 usee! crlnmanacer ci皂丄Bld (str irq) IreturnL mapp inci B f
39、indFoc v&rd. *5 llc = 35;eJ.eereturn nappinc.f iadFo&i:d( Tieiledrr);说明:Integer string I nt 亡 0 巴匚卫厲上勻亡王(imqurs匸口亡匚Feor&nietEir (习 iri);获取一行数据的id号i (lusuloiiuna.iLa-ee de lEyld (sc-c-in) return napp ing工 i n.dF0rirard (rpsuce53rr);elsere tn mapp 1 ng. i indFcrTfard(,Rfailed*);通过传id执行接口中的删除方法,返回成功或者失
40、败。27 )在checkSucess.jsp中页面上写的是:slianchuiH struts-conFig.xiril .标签中写:所以在中的 foruard name5-J-ic List gengByld (Integer id J Seeing hqJ.nUsstLogin where id-? ”;Lisc name = dao . iindByHcll (hq 1 Id); return naiwe;说明:这个方法的参数是主键id ,通过dao调用findByHql() 方法,参数 hql是通过id 查询UserLogin 表 参数id 是上面Integer id传过来的。返回相应
41、的集合(集合里面有用户名和密码)。31 )找到由屈UsrL&girAeti . j iv 4也写一个更新的方法:liiihlic jicrionForward gen ByldiA-r cion Happing irapr ing, kctianForro forrafHttpServletquest 匸亡questj EttpSeryletF3p匚xi日亡 responseithrows EncptionlInTegr string = Integer.pdreZnt匚便乱匸血更匕已】ELd”i);reque3t 巴巳tAttribute(Pgezigxin# userlo牙二皿“耳人曰孑亡: jengById(sti:;iig );re turn rrapping,f indroruardfr9uceggrr说明:接收从页面传过来的 id值注意要进行类型转换 ,利用request.setAttribute()方法,第二个参数是从接口的实例中调用更新的方法(gen gByld()取岀的值设置给第一个参数 ge ngxin 然后返回成功。32 )找到B EtrulE-caafi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动合同签订前的员工招聘流程
- 特殊教育教师招聘协议
- 智能家居娱乐网络建设合同
- 火车站屋顶防水施工合同
- 酒店食堂后勤人员招聘合同
- 钢筋工桥梁维修协议
- 体育馆照明系统安装合同
- 矿井排水注浆施工合同
- 房产中介专用合同范本
- 水上泵站钻深水井施工合同
- 防高空坠物安全教育课件
- 乡村的风许俊文赏析-乡村的风许俊文阅读答案-记叙文阅读及答案
- 楼宇消防安全培训课件
- 电脑绘图在考古器物绘图工作中的应用研究
- MOOC 3D工程图学-华中科技大学 中国大学慕课答案
- 舞蹈教师之舞-年终教学经验分享
- 医院感染科护士的终末清洁和消毒流程
- 分析高中生心理健康问题的家庭功能差异
- 酒吧接待服务流程
- 云南省昆明市五华区2023-2024学年五年级科学上学期期末试卷
- 肝细胞癌的护理查房课件
评论
0/150
提交评论