根据流程图我们可以相应的看出我们的程序从最初的浏览器到末了的页面回显的过程,有什么不明白的地方请留言提示。
Hibernate层
紧张卖力映射文件和Action和Service的注入,卖力后台做事3层之间调用
JSP
相称于我们asp.net 中的html页面是一样,如果跟我们html页面大同一样的话,那么他也是可以可以写ajax的,并且可以触发我们的事宜,通过他触发事宜是通过action属性来触发,在这个属性里面会有一个地址,是专门用于与我们后台建立连接
<form id=\"大众loginForm\"大众 action=\"大众${ pageContext.request.contextPath }/user_login.action\"大众 method=\"大众post\"大众 novalidate=\"大众novalidate\公众>
Struts配置
根据Strust的配置我们可以找到我们要到方法,前台界面找后台供应的方法,根据name=login,User_表示我们所有以user开头的地址都放到了userAction类里面。
result的意思是返回的结果,我们既然可以找到userAction类,那么当实行完userAction等一些列的功能之后我们肯定要返回结果给我的前台页面,为什么result后面会有一个name的属性呢??大家都写过3层的代码我们通过想要后台给我传过来一个参数,都是方法给予的,没有是类的把,我们只能说类里面包含了方法
以是在我们userAction类中我们有很多的方法,而name=login的方法结果我们可以跳转到/WEB-INF/jsp/login.jsp这个路径下面
<action name=\公众user_\"大众 class=\"大众userAction\"大众 method=\公众{1}\公众><result name=\"大众login\"大众>/WEB-INF/jsp/login.jsp</result>
Action
Action是我们行动层,这个是我跟他起的名字,为什么这么说呢。由于jsp触发事宜之后跑到后台的第一个地方便是Action。来实行相应的方法,他一样平常是用ActionSupport,并且引入ModelDriven。来利用模型驱动工具,实在便是我们的实体,实在Action可以看做是我们3层中的u层,然后Action调用service
根据我们的Struts我们可以找到我们的存放在userAction类中的login方法,在方法中可以看出来有一个是return,他便是通过这个返回到了我们Struts中的result属性中,然后找到了我们的jsp页面显示
public String login(){User existUser = userService.login(user); // 判断返回会来的数据是否为空if(existUser == null){ this.addActionError(\"大众登录失落败:用户名或者密码或用户没有激活\公众); return LOGIN;}else{ //保存到共享变量中 ServletActionContext.getRequest().getSession().setAttribute(\"大众existUser\"大众, existUser); // 页面跳转return \"大众loginSuccess\公众;} }
Service
紧张实现的事物还有便是调用Dao,其实在这里实现理解耦合的浸染,也减轻了Action的事情量,根据代码看出只是大略的调用了dao持久层的方法
/ 登录功能 ///用户登录的方法public User login(User user) { return userDao.login(user);}
Dao
这个是持久化层,实在便是与进行数据库语句,进行增编削查,一样平常都利用的是getHibernateTemplate.XX来实现,实现过程是传入实行mysql的语句和参数就可以了,根究代码看出我们实现的查找方法,并且改变我们的状态值,如果成功则返回我们的用户名
/ 登录功能/public User login(User user) {String hql = \公众from User where username = ? and password = ? and state = ?\"大众;List<User> list = this.getHibernateTemplate().find(hql,user.getUsername(),user.getPassword(),1); if(list != null && list.size() > 0){ return list.get(0);} return null;}
Vo
vo他便是实体层,实在与我们MVC中EF映射是一样的,其实在vo里面我们有一个是实体层,有一个xml,我们通过xml来进行实体的映射
<hibernate-mapping>--表示根元素,包含一些属性 <!-- 找到我们的包User,然后映射的表是user表 --><class name=\公众cn.itcast.shop.user.vo.User\公众 table=\公众user\"大众><!--id主键,用native --><id name=\"大众uid\公众><generator class=\"大众native\"大众/></id><!-- 字段属性进行映射,实体与数据库的字段要保持一贯性,否则报错 --><property name=\"大众username\"大众/><property name=\公众password\公众/><property name=\公众name\公众/><property name=\"大众email\"大众/><property name=\"大众phone\"大众/><property name=\公众addr\公众/><property name=\"大众state\"大众/><property name=\公众code\"大众/></class> </hibernate-mapping>
总结
通过这几天的学习,对付ssh的一条线掌控的差不多了,如果有问题的可以随时跟我联系
原文来自:http://www.linuxprobe.com/ssh-login-resion.html