您好,欢迎访问三七文档
1)拷贝下面所说的.java文件,9个java文件和相应的包名,这些都是大果任封装好的文件,可以直接用。2)dao包里面有:Dao.java还有一个impl包:IDao.javamanager包里面有:IBaseManager.javaIManager.javaIUserLoginManager.java还有一个impl包:BaseManager.javastruts包里面有:ApplicationResources.properties还有一个action包:BaseAction.javaIAction.javautils包里面有:MyActionProxy.javaObjectUtils.java再把log4j.properties贴到src包下面。2)把applicationContext.xmlspring-form.tldspring.tldstruts-bean.tldstruts-config.xmlstruts-html.tldstruts-logic.tldstruts-nested.tldstruts-tiles.tldvalidator-rules.xmlweb.xml这些以前写过的都可以贴过来,你可以直接把这个项目里的都贴过去,以后就直接在这里该代码就行了。以上两个步骤样就是为了完成手写SSH代码3)新建一个pojo包:创建一个实体:先让这个类实现序列接口如:然后写相应的字段:利用get和set方法生成每个字段的get()和set()。例如:4)为了更够生成所以为每一个字段写出相应的元数据:1.生成相应的表:说明:利用hibernate生成UserLogin表。2.字段id的映射,元数据要写在get()方法前面:3.字段username的映射,元数据要写在get()方法前面:4.字段password的映射,元数据要写在get()方法前面:这样这个UserLogin.java就完成了。5)右键项目名称找到“属性”选项:找到:XDoclet点击这个出来相应的界面:单击按钮,出现:选中:并单击确定按钮。出现:点击“确定”按钮。6)右键项目名称:执行RunXDocle后只要出现:就说明你的UserLogin类的创建成功了!!7)新建一个UserLogin.jsp的页面(带Form的那种页面):生成相应的页面后把属性名称,改成:给相应的action后面添加一个名字,指明提交表单后走哪个.do如:8)找到双击:在代码标签中手写action(就是上面表单提交后的那个/***.do):在找到标签,写上form-bean的代码:说明:根据jsp页面提交的/UserLogin.do找到struts-config.xml里面的path属性,根据name属性找到form-bean标签里的name属性,以及它对应的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-Root下创建一个普通的页面。在manager包里的impl包里面创建一个UserLoginManager.java文件:在manager包下创建一个接口IUserLoginManager.java文件:10)在IUserLoginManager.java接口中写:写这个方法,因为我们要在业务逻辑层UserLoginManager.java中写check()方法和hql语句进行检查用户登录名称和密码是否正确,而UserLoginManager.java是实现IUserLoginManager.java接口的所以就要在这里写这个方法。还有一个原因是这是ssh项目用到了Spring,Spring的优点就是让类去实现接口,体现了解耦合的好处。11)在业务逻辑层UserLoginManager.java中写:让这个类继承BaseManagerUserLogin(泛型的BaseManager)还要实现刚才写的那个IuserLoginManager接口。在这个类里面写这个check()方法是用来检查用户在登陆页面的时候登录名和登录密码是否与数据库里的一致。具体方法如图:说明:就是一个传给数据库的hql(hibernate查询语言)语句。就是一个对象数组,数组下标从0开始,values[0]表示的获取用户名的值values[1]表示的是获取用户密码的值注意:刚才的hql语句第一个是u.username=?则values[0]就是获取username的值;如果第一个是u.password=?则values[0]就是获取password的值。一定要注意位置写反了就永远查不出来了。利用dao调用findByHql()方法,里面参数hql(刚才的Stringhql)和values(刚才的对象数组)。返回的结果用ListUserLoginlist来接(泛型版本的)。就是如果list不为空而且里面有相应的数据(也就是list的大小0)就说明查询成功返回success否则就返回failed12)在中写代码:让此类继承BaseActionUserLogin,再把IUserLoginManager接口作为字段生成set方法,再添加check方法(添加未实现方法还要改名为check方法)。具体代码如下图:说明:把IUserLoginManager接口作为字段(这是一种设计模式叫做简单工厂。)在check()方法中:先实例化UserLogin,利用BeanUtils的copyProperties(实例userlogin,ActionForm的arg1)方法,就是把ActionForm的实例arg1得到的实体(从页面得到的用户输入的用户名和密码)整个拷贝给实例userlogin。返回ActionMapping的实例arg0的findForward(接口的实例.check(实例userlogin))方法。13)找到修改代码:1.写上自己写的映射文件名称和路径。2.检查相应的包名类名和自己的项目中的包名类名是否一致,如果一致就不用修改。3.把写的UserLoginManager注入到Spring里面去。4.把UserLoginAction注入到Spring里面去。14)在中写一个链接说明:登陆成功后进入success.jsp会显示相应的链接如果登录失败就会显示404错误/failed.do15)在manager包里面创建一个test包在创建一个带有main()方法的test类:写这个测试类就是为了利用for循环在表里插入相应的数据i值是可以变的,在SqlServer2005中光新建一个数据库sshdenglu就行了,它可以生成UserLogin表里面还有循环插入的数据。注意:在中propertyname=urlvalue=jdbc:sqlserver://127.0.0.1:1433;databaseName=sshdenglu/property数据库的名称和你新建数据库的名称一样就行了。写如下代码:说明:因为在中对于实体类pojo/UserLogin.hbm.xml的注入,所以用BeanFactory(Bean工厂)利用new一个xml文件并把找到的spring的xml文件放进新new的xml中去,这样就可以让测试类找到注入的相关东西。不会解释,只知道让测试类找到业务逻辑层UserLoginManager的代码就是这样写。利用for循环往数据库里面插入数据先用实体类设置相应的数据再把实体类保存到业务逻辑层中。16)先测试Test,右键main()方法:执行后先看数据库里面是否有UserLogin表再打开表查看插入的数据是否正确!!17)启动Tocat运行项目,登陆查看是否成功,若成功就会显示18)点击chaxun链接后要显示所有数据库里的东西。创建一个带有表单的jsp页面然后把body/body里面的代码都去掉写如下代码:就是为了在查询成功页面上显示:说明:利用logic:iterate标签和EL表达式循环输出数据库里面的东西:id=”bean”(bean也以随便起名字)name=”list”(为什么见下边第21步):获取id号码:获取用户名:获取密码通过id删除通过id更新19)找到往里面填写查询所有的方法(checkAll()):20)找到也往里面写查询所有的方法(checkAll()):说明:利用dao.findByHql()方法,传hql语句和因为没有第二个参数所以写null还用list来接收如果list不为空而且大小0就返回list(也就是把所有从数据库里面查到的都返回)否则返回null21)找到:写代码,其实就把刚才写过的那个check()方法复制一下,然后改写就行了:把方法名改写为checkAll()方法参数把arg0改成mappingarg1改成formarg2改成requestarg3改成response用request.setAttribute();把Iuserloginmanager接口中的checkAll()方法的返回值设置给“list”这也就是为什么上面的第18步的页面中的name=“list”了。并返回sucess22)找到,在action-mappings中写说明:因为在success.jsp页面上写的是ahref=check.dochaxun/a所以path=“/check”parameter=”checkAll”(执行checkAll方法)不使用验证框架作用域为request成功返回checkSucess.jsp失败返回failed.do23)测试一下数据库里面的数据能否显示24)找到写一个删除的方法:要利用id删除数据所以传主键id。25)找到写相应的删除方法:说明:利用dao调用delete()方法,这个参数是一个实体,所以还要用dao.get()获得实体,get()的需要2个参数一个是实体类一个是id所以要写成:dao.get(UserLogin.Class,id)再把它放进dao.deiete()里面就是:dao.deiete(dao.get(UserLogin.Class,id));这样了返回是boolean型所以返回true。26)找到:写相应的删除方法。说明:获取一行数据的id号通过传id执行接口中的删除方法,返回成功或者失败。27)在checkSucess.jsp中页面上写的是:所以在中的action-mappings标签中写:说明:Path=“/del”说明是del.doparameter=“delById”执行delById方法不使用验证框架作用域request因为我要它删除后还在本页不跳另一个页面所以我写的是check.do也就是本页的意思失败跳到failed.do28)执行一下看看能否删除(不报错),报错了在检查一下看看哪里写错了,尤其是是否和自己起的名字是否一样?要不就是返回值的问题和在Action中哪里返回的是空值。29)找到,在方法中写一个更新的方法。返回list结果集,也是根据id更新,传id值。30)找到,在方法里写一个更新的方法:说明:这个方法的参数是主键id,通过dao调用findByHql()方法,参数hql是通过id查询UserLogin表参数id是上面Integerid传过来的。返回相应的集合(集合里面有用户名和密码)。31)找到也写一个更新的方法:说明:接收从页面传过来的id值注意要进行类型转换,利用request.setAttribute
本文标题:ssh增删改查流程
链接地址:https://www.777doc.com/doc-638327 .html