您的位置:首页 > 编程语言 > Java开发

struts2+hibernate流程

2016-02-15 17:32 441 查看
Struts2没有集成在MyEclipse中,所以需要手动添加。今晚以简单的登录为例子,介绍配置流程:

1、 下载struts2相关jar,放在WEB-INF的lib文件夹中(常用的8-9个jar)。

2、 修改web.xml,添加struts2的相关过滤器。添加的部分:

<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3、 新建struts.xml文件,配置登录操作的相关action和return的网页去向:

<?xml
version="1.0"encoding="UTF-8"?>

<!DOCTYPE
struts PUBLIC
"-//Apache Software Foundation//DTD StrutsConfiguration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- struts2的action必须放在一个指定的包空间下定义 -->

<package
name="default"
extends="struts-default">
<!-- 定义处理请求URL为login.action的Action
-->
<action
name="login"class="action.UserAction">
<!-- 定义处理结果字符串和资源之间的映射关系 -->
<result
name="success">loginSuccess.jsp</result>
<result
name="input">login.jsp</result>
</action>
</package>
</struts>

4、 编写两个jsp。

5、 新建Action类,推荐继承ActionSupport类,类中包括相关的提交数据(username和password),相应的get和set方法(和javabean一样的写法),以及override的execute方法,其中要编写逻辑判断以及返回的页面要和struts.xml对应(注意,必须大写常量,这在ActionSupport实现的Action接口中有定义,不能随意改变)

6、 测试。如果用户密码不对,返回login页,成功跳到loginSuccess页。无论对不对,网址都会变为login.action,但是单独输入该网址会报错。

7、 有不足,如果知道成功的页面时loginSuccess.jsp,那就可以直接访问。两种方法解决:

一是在jsp页面中加入session的判断,这种方法直接,但不利于jsp页面代码和java代码的分离。第二种方法是利用struts2自定义的拦截器,编写一个拦截器类并重写intercept方法,最后在struts.xml中配置。

下面介绍hibernate配置,假设用户名字、密码等信息存在某数据库中。

8、 假设数据库已存在,留给我们用。我们自己先自己建一个,用MySQL。

9、 打开Window菜单栏下的Open Perspective子菜单的MyEclipse Database Explorer,空白处鼠标右键,选择New之后,在弹出的对话框当中配置数据库连接。DriverName无所谓,URL注意格式,Driver jar可以在网上下到jar,放在lib中,Driver classname可以下拉,必须选择com.mysql.jdbc.Driver,否则测试Test会失败。待测试。

10、 点击finish,选display the selected schmas手动添加数据库。如果其他项目也会用到该数据库,那么2~3的工作是一劳永逸的。

11、 回到开发视图,右键单击,选择MyEclipse下的Add Hibernate Capabilities后,弹出下图Hibernate的配置窗口,选择Hibernate3.3版本。

12、 Next,依次生成xml,配置数据库(选择刚才的DriverName),生成SessionFactory。目前,我们生成了HibernateSessionFactory.javahibernate.cfg.xml配置文件。Xml中有用户名和密码,感觉有点危险啊。

13、 反向工程生成持久类,映射文件和DAO(非必须)。在数据库视图中对数据库其中一个表进行。完成这一步后,观察各个文件的继承和接口实现的关系。

14、 利用DAO对struts2中的Action进行修改。

15、 第一次运行,发现无论输入密码对错,都会报错,显示hibernate找不到criteria类。其实是因为找不到hibernate相关jar,虽然添加了系统集成的框架,但没有复制到网站目录路径中。这点其实在添加框架时可以选择copy to classpath,它默认没有。如果之前没有选择copy,则后面我们手动添加即可,即复制到lib中。

16、 成功。主要代码如下。

public String execute()
throws Exception{
StringstrReturn = INPUT;
BasicDAOdao = newBasicDAO();
Transactiontx = dao.getSession().beginTransaction();
Basicusr = newBasic();
usr.setName(username);
usr.setPassword(password);
Listlist = dao.findByExample(usr);
tx.commit();
if(list.size()>0){
strReturn= SUCCESS;
}
else
ActionContext.getContext().getSession().put("tip",
"登录失败");
dao.getSession().close();

注意findbyexample不受其他字段影响,虽然还有age等字段,只设置用户名和密码也可以找,age就不作为find的依据了。

17、 试了一下注册功能,就是save插入数据库功能,也是可以的。

BasicDAOdao = newBasicDAO();
Transaction tx = dao.getSession().beginTransaction();

Basicnewusr = newBasic();
newusr.setName(username);
newusr.setPassword(password);
dao.save(newusr);
tx.commit();

注意到如果有字段没有set的,在数据库中相应字段会显示null。

总结总结,接下来可以学习spring框架了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: