版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ssh增删改查流程1)拷贝下而所讲的Java文件,9个java文件和相应的包名,这些差不多上大果任封装好的 文件,能够直截了当用。2) dao 包里而有:Dao.java 还有一个 impl 包:IDao.javamanager 包里面有:IBaseManager.javaIManager.java IUserLoginManager.java还有一个 impl 包:BaseManager.javastruts 包里面有:ApplicationRperties还有一个 action 包:BaseAction.java IAction.javautils 包里而有:MyA
2、ctionProxy.java ObjectUtils.java再把perties贴到src包下面。2)把 applicationContext.xmlspring-form.tldspring.tldstnits-bean.tldstruts-config.xmlstnits-html.tldstnits-logic.tldstnits-nested.tldstnits-tiles.tldvalidator-rules.xmlweb.xml这些往常写过的都能够贴过来,你能够直截了当把那个项目里的都贴过去,以后就宜截了当 在那个地点该代码就行了。以上两个步骤样确实是为了完成手
3、写SSH代码3)新建一个pojo包:LJJAUI日剧pojo 创建一个实体:巨 TD UserLogin. j ava =r-x先让PU1Q让olass U3erLOgin那个类实现序列接口如:然后写相应的字段:卫rivate Integer id; private String username; private String password;|利用get和set方法生成每个字段的gct()和set()o例如: piiblic Integer get Id ()return id;public void set Id(Integer id) this.id = id;4) 为了更够生成訪咤
4、皿hbm.Ttml因此为每一个字段写出相应的元数据:1.生成相应的表:package pojo;/七力七畜 hibernate. c lass table=rrUserLoginrfpulilic class UserLogin implements java io Serializable 讲明:利用hibernate生成UserLogin表。2 字段id的映射,元数据要写在gel ()方法前而:|小k Ohibernate i段 generator-class=rridentityrrpublic In匚eger getld() return id;public void setld (I
5、nteger id.) this.id = id;3.字段username的映射,元数拯要写在get ()方法前而:* hibernate property colurcin= MusernarneF, length= FF20M */public Str ing getUsernarne ()return username;public void setUsernarne (String U3ernarne) this - usernarne = username;4.字段password的映射,元数据要写在get ()方法前而:/ ttinot-null=rrf alserr* Qliib
6、ernate property colunn=trpassword length= rr20r, Vpublic String get-Password () return passwrd;puJilic void setPassx.rord (String password) this .psssuoirdl = password;如此那个UserLogin.java就完成了。5)右键项目需称找到“属性”选项:运行方式(B)调试方式Q)槪要分析方式g)小鉅)比较对象)从本地历史记录复原CX).MyEclipsePDE工具(O)属性)Alt+Enter找到:XDoclet点击那个岀来相应的界而
7、:w , 九& Standard.单击按钮,显现:选中:并单击确左按钮。显现:点击“确定”按钮。6)右键项目名称:package pojo;白锣src申田i由“ 4 由“ 曰谭I S-|氈白田厂新建址)进入d)在新窗口中打开(S)打开类型层次结构(S)F4腫复制Ctrl+C复制限定名歯粘贴他)Ctrl+VX删除)Delete 构建路径)源代碍$)Alt+Shit+S重构(I)适导入(!) 必导出刷新E)F5关闭顶目)运行方式 |调试方式)槻要分析方式(V小组比较对象)从本地历史记录复原(!)1MyEclipsePDE工具属性龜)Alt+Enter H L】Dr1 ttSs UserLogin
8、inplements javaioSeri?Tnr.pcar i d :Add and Remove Project Deployments.Add Web Service Capabiliti Add Tapes try Capabil it ies Add Struts Capabilities. Add Spring Capabilities. Add JPA Capabilities.Add JSF Capability Add JSTL Libraries.Add Hibernate Capabiliti”.Run XDocletf Open in Exp: Q醫念XDoclet 而
9、佃RunK , F查询更多词典严仔搜索因持闕Manage A all aaz on.Remove All Validation Markers执行Run XDocle后只要显现:miiaicuz L.n uuiam i icv*iu.uuicmiiijava/r.czc uvuv t,?.iu.wn ri*iEui2dilc: C: Doctaircnc and Sc 11 i ngo Achrt in i3t rator ? ? my trot k J SP ? ? l 11 xdoclc t- buil d tmp N6SSM:hibernat edoc Let (XDoc Let Mai
10、n etart47| Running hibernahiher nat edoc Let Generating roapp ing ile for poj oU serLogin hibernatedoc Let pojo UserLoginxdoclet cjenerat loh_ :BUILD SUCCESSFULTotaL time: 5 seconds就讲明你的UserLogin类的 际也呻n.创建成功了 !7)新建一个UscrLogin.jsp的页面(带Form的那种页面):File Path;File Name;Template to use;/sshdenglu/WebRootM
11、yJsp.jspgtqnd qd J 近卫3ig 1:1 1忖也 gripBrowse.生成相应的页而后把属性名称,改成:Login:Password:htrnL: password property=r,pa55ijjord,r给相应的action后而添加一个名字,指明提交表单后走哪个.do如: 8)找到 O struts-config.xml 双击:在代码“etioPPigm标签中手写action(确实是上面表单提交后的那个/*.do):在找到 虫口绅标签,写上foimbcan的代码:讲明:依照jsp页面提交的/UserLogin.do找到struts-config.xml里而的path属
12、性,依照name属性找至!1 form-bean标签里的name属性,以及它对应的type属性,type属 性写的确实是pojo类中UserLogin的全名(包括包名和类需),Parameter属性是讲明表单提交后要执行check方法,Validate=“falsc”属性讲明不使用表单验证框架,Scope=,request讲明作用域是 request,Typc=“属性写得确实是你一会要创建的UserLoginAction的全名(包括包冬和类划),Forword标签确实是讲明要是check成功后跳转success.jspj,失败就跳转failed.jsp页 而O9)依照上而的xml文件我们创建相
13、应的Java类和相应的jsp页面。在action包里面创建一个2加UserLoginAction. java在Web-Root下创建一个在manager包里的impl包里面创建一个UscrLoginManagcr.java文件: 田 manager油 implb Jj BaseManager.javaUserLoginManaqer .javaj卜剧-|T| BaseManager, javat : Jj UserLoginMarvag曰j抄a $ testt jj Test.javab Jj IBaseManager.java Jj IManager.javaIUserLoginMa nag
14、er .javaJ讪10) 在 IUserLoginManager.java 接口 中写:public aibstract String check (UserLogin user inf o);写那个方法,因为我们要在业务逻辑:层UscrLoginManagcr.javd中写check()方法和hql 语句进行检查用户登录名称和密码是否正确,而UscrLoginManagcr.java是实现 IUserLoginManager.java接口的因此就要在那个地点写那个方法。还有一个缘故是这是ssh 项目用到了 Spring, Spring的优点确实是让类去实现接口,表达了解耦合的好处。11)
15、在业务逻辑层 UscrLoginManagcr.java 中写:pulilic class UserLogirlanager extends EaseIanagerUserLogin injlements IUserLoginDatiager 让那个类继承BaseManager(泛型的BaseManager)还要实现刚才写的那个 IuserLoginManager 接 口 0在那个类里而写public String check(UserLogin user info)那个check()方法是用来检查用户在登陆页面的时候登录夕i和登录密码是否与数据库 里的一致。具体方法如图:public Str
16、ing check(UserLogin userinfo) String hql=,rfrom UserLogin u where u usernarne=? and u. password=?,r; Object values=ne5r Object2;values0 =userino. getUsernarne ();values 1 =userinQ. getPassword();List list = dao f indByHql (hql, values);if (list ! = null & list .size () 0)(return SUCESSelsereturn FAT
17、LED;讲明:String hql = rrfroin UserLogin u where u.usernawe=? and u password.= ?rr;确实是一个传给数据库的hql(hibcrnate查询语言)语句。0)3ject values=nevr Object 2;values0 =userinfo.getUsernaine ();values1 =userinfo.getPassword();确实是一个对象数组,数组下标从0开始,values表示的猎取用户名的值values! 1示的是猎取用户密码的值一怎要注意位這写反了就永久査不岀来了。ListUserLogin?- lis
18、t- = dao. f indByHql (hqlj values);利用dao调用findByHql()方法,里而参数hql(刚才的String hql)和values(刚才的对象 数组)。返回的结果用List list来接(泛型版本的)。if (list != null & lis匕.size)0) return. S必ESS;else return FATLEE;确实是假如list不为空而且里面有相应的数据(也确实是list的大小0)就讲明查询成功 返回success否则就返回failed12)在上血UserLoginActio n. javd中写代码:让此类继承,再把IUserLogi
19、nManager接口作为字段生 成set方法,再添加check方法(添加未实现方法还要改名为check方法)具体代码如下图:public class UserLoginAction extends BaseActionprivateTUserLoginManagerIuser loginrranager;pubic void set. iuser logimnanager (I us er L o g mnanage r iuser loginrnanager | Iuser loginmanager = iuser logimnanager;puli Tic Act ionFor ward
20、check (ActionHapping argO, ActionFo cm acgl, HttpServletRequest arg2, HttpServletResponse arg3) thrcnrs E:ceptionUserLogin user login = new UserLoain():BeanUt113 (user login, argl);return arg0 rindForu&Ld( lusexloglnrn chick: (usexlogin);讲明二_把IUserLoginManager接口作为字段(这是种设计模式叫做简单工厂。)在check()方法中:先实例化 U
21、serLogin,利用 BeanUtils 的 copyProperties(实例 userlogin,ActionForm 的 argl) 方法,确实是把ActionForm的实例argl得到的实体(从页面得到的用户输入的用户名和密码) 整个拷贝给实例userlogino返回 ActionMapping 的实例 argO 的 findForward(接口的实例.check(实例 userlogin)方 法。13)找到0SIBSQBr-a.修改代码:pojo/UserLogin hbm.xml1. 写上自己写的映射文件名称和路径。ref local=SessionFacto匕2检查相应的包名类
22、名和自己的项目中 的包名类名是否一致,假如一致就不用修改。3. re local=Dao把写的UserLoginManager注入到Spring里而去。4.bean id=rstruts 氛cCion UmExrLoginJLut: ion c las3= wst ruts act ion U弓 ez: Log inAu cion、 把 UserLoginAction 注入到 Spring 里而去。14)在“uce$jp中写一个链接讲明:登陆成功后进入success.jsp会显示相应的链接a href = FFcheckxun假如登录失败就会显示404错误15 )在manager包里而创建一个
23、test包在创建一个带有main()方法的test类:,B manager1 : H impl卜JJ BaseManag er. java J2l UserLogin M anag er. ja Ya/ 由 testTest, javab Tj I BaseM anag er. ja vaP E IManager.javab JS I UserLog in M anager. java写那个测试类确实是为了利用for循环在表里插入相应的数据i值是能够变的,在 SqlServer2OO5中光新建一个数据库sshdcnglu就行了,它能够生成UserLogin表里而还有循 环插入的数据。.心/.
24、/ - applicationcontext.x (,数据库的名称和你新建数据库的名称一样就行了。写如下代码:public static void main (Str ing args) BeanFactary bearJactory=neff FileSy3teiraiLAppLicationConte:t|frUebRoot/UEE-M/applicationContcxt.xnilr,|; UserLoginManager usetLoginmansgei: = (UserLoginManager) fa eanF ac t or y. ge t Be an (Use iL ogi nK
25、anage rM | ; for (int i = 0; i 10; i+) (JserLogin user login = nnr UserLogin();user login. setUsernaireta+i);use r login. setP ass vq id (ffaaF!+i);user loginrnar.agEr. saveOne (userlogin);)讲明:BeanFactorv beanFactory=new F ileSvatemXinlApp 1 icationContext (,F(iJebRoot/&JEB-INFappl icationContext. x
26、lfr);因为在严冲关于实体类的注入,因此用BeanFactory (Bean工厂)利用new 个xml文件并把找到的spring的xml文件放进新new 的沏丄中去,如此就能够让测试类找到注入的相关东西。UsecLogintags: use:locig5r =阴仕Login!恤ag训 MaM址洞屮旳aAuginK汕期已门;可不能讲明,只明白让测试类找到业务逻辑层UserLoginManager的代码确实是如此写。for (int i = 0; i 利用for循环往数据库里面插入数据先用实体类设置相应的数据再把实体类储存到业务逻辑层 中。16) 先测试Test右键main ()方法:翁 Add
27、 to Snippets.Run AsDebug AsProfile AsTftam罔 Run on ServerAlt+Shift+X, RD Z Java ApplicationAlt+5hift+X, JtQ 3MyEdipse Server Application执行后先看数据库里闻是否有UserLogin衣再打开衣查看插入的数据是否正确! !chaun17) 启动Tost运行项目,登陆查看是否成功,若成功就会显示18) 点击chaxun链接后耍显示所有数据库里的东西。创建个带有农单的jsp贞而鱼checkSucess.jsp然后把bodyX/body里面的代码都去掉写如卜代码:log
28、ic : iterate id= F,beanff naine= M listtoean. id fintosp; fintosp; $ bean, usernaine fintosp; sntosp; $toean snfosp; fintosp; &ntosp;shanchuntosp; intosp; gengx in确实是为了在查询成功页而上显示:$ bean.id ) $ bean.username S(bean.passwcrd ) shanthu /ngan讲明:利用logic: iterate标签和EL农达式循环输出数据库里而的东西: id=/zbean,z (bean也以随便
29、起名字)name=zzlistz/ (什么缘故见下边第21步)bean-Ld :猎取 id 号码$ (bean, usernarne猎収用户名$ bean, password彳昔取密码IllserLoginManager. javashanchu-通过 删|绦 href=Frgeng. do?sid=$bean. id已勺通过 更新往里面填写查询所有的方法(checkAll (): public List checkAll(J;20)找到BQrt-i .UserLogin M anag er .jaya也往里(fit上i査询所有的方法(checkAll ():public List check
30、All() String hql=rrfrorn UserLoginrr;List. list. = dao. f indByHql (hq 11 null); if(113t != nuUL & li3t.size (J 0)return list;return nul1;讲明:利用dao . f indByfiql ()传hql语句和因为没有第二个参数因此筠null还用lis匕来接收假如list不为空而且人小0就返回list (也确实是把所有从数据库里而査到的都返回) 否则返回null写代码,事实上就把刚才写过的那个oheck()方法复制下,然后改写就行了:pulilic ActionFo
31、rward checkAll(ActionMapping mappingf ActionForw form; HttpServletPequest request HccpServlecResponse response)throws Exception request .SEtJirtxibutEIusEtrloginmanagEt: checkJLLL (| | ;return trappingfindFDi:warci(3UCESs);把方法名改写为checkAll ()方法参数把argO改成mappingargl 改成 formarg2 改成 requestarg3改成 respons
32、e用 request setAttribute ();把 I us er loginmanager 接口 的 checkAll ()方法的返回值设置给list这也确实是什么缘故上闻的第18步的页面中的name= list C并返回sucess22)找到盘struts-wnfig.xnnl 在中打action path= FR/checkFR pauarcietei:=FfcheckAllMva.1scope=,Requestr,type = rrstruts action UsErrLogirULetLion”、讲明:因为在 success . jsp 页面上写的是Witt path= u /
33、check pazamEtEi:=ohEC:kAll(执行 checkAll 方法)不使用验证框架作用域为request成功返回checkSucessjsp 失贝攵返回faileddo23)测试下数据库里面的数据能否显示24)找到匕卫IUserLoginManager .jva写个删除的方法:public boolean delByld(Integer id);要利用id删除数据因此传主键id。25)找到二皿UserLogin M en ager. ja va写相应的删除方法:卫HbJlic boolean delByld (Integer id) dao delete (dao. get (
34、UserLogin cJLass # id); return true;/return false;讲明:利用亞。调用delete ()方法,那个参数是个实体,因此还要用dao. get ()获 得实体,get()的需要2个参数个是实体类一个是id因此要写成:dao . get (UserLogin . Class z d)再把它放进 dao . deiete ()里面确实是:dao deiete (dao get (UserLogin Class f id);女II此 /返回是boolean型因此返回trueo26)找到也呱erLoginActim伽无 写相应的删除方法。public Act
35、 icnForword delByld (Act ionMapping mapping, Act-ionFotzm form,HttpServletReQuest request, HttpServletResponse response)thrm/s ExceptionInteger string - Integer pomomt (iruquun匕 gucParoiYieDui: (ni.d);if (I us e r io g i manager .delByld (scr mg) lreturn moppingf indFDQU0i:d( ucu”);elsereturn mappin
36、gf indFot:u&rd:f&iEd):讲明:Integer string = Integer已qu已已匸已i: (sid);猎取-行数据的id号i (Iuser logimnaaager . d.elById(string)return mapping f indFoi:wdi7dL( suuerss);elsereturn mapping, f indForward( FPfailed);通过传id执行接口中的删除方法,返回成功或者失败。27 )在 checkSucess . j sp 中页的是:shanchu“Ekstruts-conFig.xml :,一因此在jgHgjHggjjj
37、HjjijjBI 中的 标签中上j:pe=F,requestFltype = ,struts action UserLoglnActlon,r讲明:Path= u /del M 讲明是 del. doparameter= delByld 执行 delByld JjH不使用验证框架作用域request因为我要它删除后还在本页不跳另个页而因此我写的是check, do也确实是本页的盘思 失贝攵跳到failed. do28)执行下看看能否删除(不报错),报错了在检査下看看哪里写错了,专门是 凶struZnF叫是否和自己起的名字是否样?要不确实是返回值的咨询题和在心中 哪里返回的是空值。29)找到#2
38、1IUserLogiiJanager. java在方法中写个更新的方法。DUhllC Li5t ngById(Integer id) 返回结果集,也是依照id更新,传id值。30)找到也UserLogiriflanger. ja.v*在方法里写个更新的方法:puljlic List gengById (Integer id) String hql=M fuom UserLogin where id=? M; L15t name = dao 工indEiyHq丄(hql, id); return nare;讲明:那个方法的参数是主键id,通过dao调用f indByHql ()方法,参数hql是
39、通过id査询UserLogin表 参数id是上面Integer id传过来的。31)找到由也返回相应的集合(集合里闻有用户名和密码八也写个更新的方法:public Actionforward gengByld (ActionHapping rtapping, kctionFornj form,HttpServlerequest; HttpSecvletP.espcnse response) throws Exception!Integer string = Integer.pdrse功I (rEQumst.gEtPaiamEtgr (3Ld);request SEt At tribute (p
40、gengxinF I use r 1 o g i nmanage r gEng3yhd(str:ingn ; return nappingf indFomai:d(PucEg3):讲明:32)找到:B stnits-con.fi g. xml埼出更新的action/forxcraud?- |checkSucess. j sp讲明:W为厂中写的是:gengxin/axR码因此:path 属性=“/geng”,执行的是 gengByld () 7/Pl lit parameter s -4 gang Ey 工d作用域是 request 因此 scope=requestM假如成功返回gengxin.
41、 jsp页面 假如失败返回failed.doo33)创建个带form的更新页面写行gengxin. jspge ngx i nc he nggo n g f34)测试下看看点击更新链接翌嗨 能否跳转到gengxin. jspo35)找到:e-EiIUserLogi nlilonager, j ava写个反选更新的方法:卫ubJLic void fxgengByld(UserLogin login);它是讲明:当在gang:-:in . j sp点击更新按钮的时候执行更新的方法。36) 找到VserLoguJager.java也写个反选更新的方法:public void f xgengBy Id
42、. (User Login login) try dao updaXR (login.): catch (Exception, e)e.printStackTrace();讲明:把实体UserLogin和它的对象login作为参数传给fxgengByld () 利用dao调用 update (里面的参数为对象login) 进行语句的更新。37) 找到2 UserLoginAction.java写个反选更新的方法:public AccionForward I xgengBy Id (Acu lonMapp lng wapplngf Actio nF or w rorrn,HctpServletRequest request,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年构建算力资源“数字身份证”全国一码通行机制
- 2026年柔性机器人故障自诊断与预测性维护体系
- 2026年新建和改造提升高标准农田4亿亩目标任务分解指南
- 2026年天津市合成生物专项项目申报条件解析
- 2026年民政科技创新智能监护技术攻关项目申报
- 2026年碳化硅氮化镓器件在新型储能系统应用
- 2026年自治法治德治三治融合实践探索
- 2026年高铁数字孪生场景列车轨迹基站覆盖实时映射
- 2026年氢能产业链碳足迹科学量化与绿氢认证实务
- 汉江实验室2026届校园招聘备考题库附参考答案详解【典型题】
- 吉水县2026年面向社会公开招聘农村(社区)“多员合一岗”工作人员【146人】考试备考试题及答案解析
- 2026年中级消防设施操作员习题库(附答案解析)
- 民盟支部内部管理制度
- 2026年公安局辅警招聘《综合理论知识》考试题库及答案
- 2025-2026学年冀美版(新教材)初中美术八年级下册(全册)教学设计(附目录P125)
- 吸痰护理操作中的并发症预防
- 1.6 有多少名观众 课件-2025-2026学年三年级下册数学北师大版
- 动物营养学各单元
- 2026年海底管道智能巡检报告及未来五至十年海洋工程报告
- RCEP培训商务部课件
- 儿童过敏免疫诊疗中心过敏免疫门诊规范化建设专家共识课件
评论
0/150
提交评论