ssh增删改查流程.docx

上传人:小飞机 文档编号:1846273 上传时间:2022-12-21 格式:DOCX 页数:20 大小:395.55KB
返回 下载 相关 举报
ssh增删改查流程.docx_第1页
第1页 / 共20页
ssh增删改查流程.docx_第2页
第2页 / 共20页
ssh增删改查流程.docx_第3页
第3页 / 共20页
ssh增删改查流程.docx_第4页
第4页 / 共20页
ssh增删改查流程.docx_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《ssh增删改查流程.docx》由会员分享,可在线阅读,更多相关《ssh增删改查流程.docx(20页珍藏版)》请在三一办公上搜索。

1、1) 拷贝下面所说的.java文件,9个java文件和相应的包名,这些都是大果任封装好的文件,可以直接用。2)dao包里面有:Dao.java 还有一个impl包:IDao.javamanager包里面有: IBaseManager.java IManager.java IUserLoginManager.java 还有一个impl包:BaseManager.javastruts包里面有: ApplicationResources.properties 还有一个action包:BaseAction.java IAction.java utils包里面有:MyActionProxy.java O

2、bjectUtils.java 再把 log4j.properties 贴到src包下面。2)把 applicationContext.xml spring-form.tld spring.tld struts-bean.tld struts-config.xml struts-html.tld struts-logic.tld struts-nested.tld struts-tiles.tld validator-rules.xml web.xml这些以前写过的都可以贴过来,你可以直接把这个项目里的都贴过去,以后就直接在这里该代码就行了。以上两个步骤样就是为了完成手写SSH代码3)新建一个

3、pojo包: 创建一个实体:先让这个类实现序列接口如:然后写相应的字段:利用get和set方法生成每个字段的get()和set()。例如:4)为了更够生成所以为每一个字段写出相应的元数据:1.生成相应的表:说明:利用hibernate生成UserLogin表。2.字段id的映射,元数据要写在get()方法前面: 3. 字段username的映射,元数据要写在get()方法前面:4. 字段password的映射,元数据要写在get()方法前面:这样这个UserLogin.java就完成了。5)右键项目名称找到“属性”选项:找到:XDoclet 点击这个出来相应的界面:单击按钮,出现:选中:并单击

4、确定按钮。出现:点击“确定”按钮。6)右键项目名称:执行Run XDocle后只要出现:就说明你的UserLogin类的创建成功了!7)新建一个UserLogin.jsp的页面(带Form的那种页面):生成相应的页面后把属性名称,改成:给相应的action后面添加一个名字,指明提交表单后走哪个.do如:8)找到双击:在代码标签中手写action(就是上面表单提交后的那个 /*.do):在找到标签,写上form-bean的代码:说明:根据jsp页面提交的/UserLogin.do 找到struts-config.xml里面的path属性,根据name属性找到form-bean标签里的name属性

5、,以及它对应的type属性,type属性写的就是pojo类中UserLogin的全名(包括包名和类名),Parameter属性是说明表单提交后要执行check方法,Validate=”false”属性说明不使用表单验证框架,Scope=”request”说明作用域是request,Type=”属性写得就是你一会要创建的UserLoginAction的全名(包括包名和类名),Forword标签就是说明要是check成功后跳转success.jspj,失败就跳转failed.jsp页面。9)根据上面的xml文件我们创建相应的.java类和相应的jsp页面。 在action包里面创建一个, 在Web

6、-Root下创建一个普通的页面。在manager包里的impl包里面创建一个UserLoginManager.java文件:在manager包下创建一个接口IUserLoginManager.java文件:10)在IUserLoginManager.java接口中写:写这个方法,因为我们要在业务逻辑层UserLoginManager.java中写check()方法和hql语句进行检查用户登录名称和密码是否正确,而UserLoginManager.java是实现IUserLoginManager.java接口的所以就要在这里写这个方法。还有一个原因是这是ssh项目用到了Spring,Spring

7、的优点就是让类去实现接口,体现了解耦合的好处。11)在业务逻辑层UserLoginManager.java中写:让这个类继承BaseManager(泛型的BaseManager)还要实现刚才写的那个IuserLoginManager接口。在这个类里面写这个check()方法是用来检查用户在登陆页面的时候登录名和登录密码是否与数据库里的一致。具体方法如图:说明:就是一个传给数据库的hql(hibernate 查询语言)语句。就是一个对象数组,数组下标从0开始,values0表示的获取用户名的值 values1表示的是获取用户密码的值注意:刚才的hql语句第一个是u.username=?则valu

8、es0就是获取username的值; 如果第一个是u.password=?则values0就是获取password的值。一定要注意位置写反了就永远查不出来了。利用dao调用findByHql()方法,里面参数hql(刚才的String hql)和values(刚才的对象数组)。返回的结果用List list 来接(泛型版本的)。就是如果list不为空而且里面有相应的数据(也就是list的大小0)就说明查询成功返回success 否则就返回failed 12)在中写代码:让此类继承BaseAction,再把IUserLoginManager接口作为字段生成set方法,再添加check方法(添加未

9、实现方法还要改名为check方法)。具体代码如下图:说明:把IUserLoginManager接口作为字段(这是一种设计模式叫做简单工厂。)在check()方法中:先实例化UserLogin,利用BeanUtils的copyProperties(实例userlogin,ActionForm的arg1)方法,就是把ActionForm的实例arg1得到的实体(从页面得到的用户输入的用户名和密码)整个拷贝给实例userlogin。返回 ActionMapping的实例arg0的findForward(接口的实例.check(实例userlogin)方法。13)找到修改代码:1.写上自己写的映射文件

10、名称和路径。2.检查相应的包名类名和自己的项目中的包名类名是否一致,如果一致就不用修改。3.把写的UserLoginManager注入到Spring里面去。4.把UserLoginAction注入到Spring里面去。14)在中写一个链接说明:登陆成功后进入success.jsp会显示相应的链接如果登录失败就会显示404错误/failed.do15)在manager包里面创建一个test包在创建一个带有main()方法的test类:写这个测试类就是为了利用for循环在表里插入相应的数据i 值是可以变的,在SqlServer2005中光新建一个数据库sshdenglu 就行了,它可以生成User

11、Login表里面还有循环插入的数据。注意:在中数据库的名称和你新建数据库的名称一样就行了。写如下代码:说明:因为在中对于实体类pojo/UserLogin.hbm.xml的注入,所以用BeanFactory(Bean工厂)利用new一个xml文件并把找到的spring的xml文件放进新new的xml中去,这样就可以让测试类找到注入的相关东西。不会解释,只知道让测试类找到业务逻辑层UserLoginManager的代码就是这样写。利用for循环往数据库里面插入数据先用实体类设置相应的数据再把实体类保存到业务逻辑层中。16)先测试Test,右键main()方法:执行后先看数据库里面是否有UserL

12、ogin表再打开表查看插入的数据是否正确!17)启动Tocat运行项目,登陆查看是否成功,若成功就会显示18)点击chaxun链接后要显示所有数据库里的东西。 创建一个带有表单的jsp页面然后把里面的代码都去掉写如下代码:就是为了在查询成功页面上显示:说明:利用logic:iterate标签和EL表达式循环输出数据库里面的东西:id=”bean”(bean也以随便起名字)name=”list” (为什么见下边第21步):获取id号码:获取用户名:获取密码 通过id删除通过id更新19)找到往里面填写查询所有的方法(checkAll():20)找到也往里面写查询所有的方法(checkAll():

13、说明: 利用dao.findByHql()方法,传hql语句和因为没有第二个参数所以写null 还用list来接收 如果list不为空而且大小0就返回list(也就是把所有从数据库里面查到的都返回)否则返回null21)找到:写代码,其实就把刚才写过的那个check()方法复制一下,然后改写就行了:把方法名改写为checkAll()方法参数把arg0改成mapping arg1 改成form arg2改成request arg3改成response用request.setAttribute();把Iuserloginmanager接口中的checkAll()方法的返回值设置给“list”这也就

14、是为什么上面的第18步的页面中的name=“list”了。并返回sucess 22)找到,在中写说明:因为在success.jsp页面上写的是cha xun所以path=“/check”parameter=”checkAll”(执行checkAll方法)不使用验证框架 作用域为request成功返回checkSucess.jsp 失败返回failed.do23)测试一下数据库里面的数据能否显示24)找到写一个删除的方法:要利用id删除数据所以传主键id。25)找到写相应的删除方法:说明:利用dao调用delete()方法,这个参数是一个实体,所以还要用dao.get()获得实体,get()的需

15、要2个参数一个是实体类一个是id 所以要写成:dao.get(UserLogin.Class,id)再把它放进dao.deiete()里面就是:dao.deiete(dao.get(UserLogin.Class,id);这样了返回是boolean型所以返回true。26)找到:写相应的删除方法。说明: 获取一行数据的id号通过传id执行接口中的删除方法,返回成功或者失败。27)在checkSucess.jsp中页面上写的是:所以在中的标签中写:说明:Path=“/del”说明是del.do parameter=“delById”执行delById方法不使用验证框架作用域request因为我要

16、它删除后还在本页不跳另一个页面所以我写的是check.do也就是本页的意思失败跳到failed.do28)执行一下看看能否删除(不报错),报错了在检查一下看看哪里写错了,尤其是是否和自己起的名字是否一样?要不就是返回值的问题和在Action中哪里返回的是空值。29)找到,在方法中写一个更新的方法。返回list结果集,也是根据id更新,传id值。30)找到,在方法里写一个更新的方法:说明:这个方法的参数是主键id,通过dao调用findByHql()方法,参数hql是通过id查询UserLogin表 参数id是上面Integer id 传过来的。返回相应的集合(集合里面有用户名和密码)。31)找

17、到也写一个更新的方法:说明:接收从页面传过来的id值注意要进行类型转换,利用request.setAttribute()方法,第二个参数是从接口的实例中调用更新的方法(gengById()取出的值设置给第一个参数“gengxin”然后返回成功。32)找到: 写出更新的action说明:因为中写的是:代码所以:path属性=“/geng”,执行的是gengById()方法所以parameters=“gengById” 作用域是request所以scope=“request” 如果成功返回gengxin.jsp页面 如果失败返回failed.do。33)创建一个带form的更新页面写一行!34)测

18、试一下看看点击更新链接能否跳转到gengxin.jsp。35)找到:写一个反选更新的方法:它是说明:当在gengxin.jsp点击更新按钮的时候执行更新的方法。36)找到也写一个反选更新的方法:说明:把实体UserLogin 和它的对象login作为参数传给fxgengById(),利用dao调用update(里面的参数为对象login),进行语句的更新。37)找到写一个反选更新的方法:说明:把上面那个gengById方法复制过来,改代码就可以了。先接受从页面穿过来的id值并要进行强制类型转换;重新new一个实体;把ActionForm里面的值拷贝给新new的那个实体;通过接口的实例去调用fx

19、gengById()方法,参数为新new的实体;返回 跳转的页面。38)找到页面:,把标签里面的代码(除了表单、和按钮的代码留下以外)全部去掉,写下面的代码:说明:利用标签输出用户的id 、用户名、用户密码,属性id=“geng”随便起的名字(为反选做准备,反选的意思是:)。属性name=“gengxin”随起的名字。标签表示隐藏域 因为id是主键不能修改的,所以利用此标签后用户在页面上是看不到的(其实主键也是被选中的,只不过看不见罢了!);标签表示文本框 标签表示 密码框这三个标签中的property属性都是与中,相应的属性名称是一样的;name属性=“geng”就是为了进行反选(只要用到反

20、选必须写这个属性)其中value属性就是让按钮上显示相应的文字或者英文在action属性中写上要去的那个“/fxgeng.do”39)找到中的标签:再写一个action:说明:Path属性与相对应所以写“/fxgeng”调用fxgengById()方法所以写parameter属性不使用验证框架作用域为request写一个form(不用创建相应的Form)name为gengxinForm再写标签跳转成功或者失败的页面40)还在中再找到标签里面添加一个gengxinForm:说明:name属性与刚才创建的form的名字要完全一样,type属性就是粘贴pojo包中的UserLogin的全名。41)麻烦您执行一边,看看能不能点击更新按钮后回到查询成功那个页面,而且数据也会有相应的变动。42)如果有错误慢慢修改,欢迎大家提出相应的意见和建议,我会虚心接受,谢谢观赏!版权所有 违者斩立决

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号