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

初识struts2和hibernate在MyEclipse下整合

2015-03-15 21:41 393 查看
在MyEclipse下插件方便很多,所以转战MyEclipse。

整合struts2和hibernate,例子是一个简单的登陆的功能,数据库是MySql。

先是配Struts2环境

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />

<package name="default" extends="struts-default">

<default-action-ref name="index" />

<global-results>
<result name="error">error.jsp</result>
</global-results>

<global-exception-mappings>
<exception-mapping exception="java.lang.Exception"
result="error" />
</global-exception-mappings>

<action name="loginn" class="com.test.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="input">/index.jsp</result>
<result name="error">/index.jsp</result>
</action>
</package>
</struts>


LoginAction.java
package com.test.action;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.test.dao.UserDaoImpl;
import com.test.model.User;

public class LoginAction extends ActionSupport {

private User user = new User();

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public void validate() {
if (user.getUsername().equals("")) {
this.addActionError("用户名不能为空");
}
if (user.getPassword().equals("")) {
this.addActionError("密码不能为空");
}
}

public String execute() {
System.out.println(user.getUsername() + "," + user.getPassword());
String t = "admin";
if (user.getUsername().equals(t)&&user.getPassword().equals(t)) {
return SUCCESS;
}
this.addActionError("用户名密码错误!");
return ERROR;
}

}


struts2框架正常。。
再加Hibernate。

User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.test.model">
<class name="User" table="test_hibernate_user">
<id name="id" type="integer">
<generator class="identity" />
</id>
<property name="username" type="string" />
<property name="password" type="string" />
</class>
</hibernate-mapping>


UserDaoImpl.java
package com.test.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.test.model.HibernateSessionFactory;
import com.test.model.User;

public class UserDaoImpl implements UserDao {

public boolean login(User user) {
try {
System.out.println("1111");
Session session = HibernateSessionFactory.getSession();
Query q = session
.createQuery("from User as a where a.username=? and a.password=?");
q.setString(0, user.getUsername());
q.setString(1, user.getPassword());
List list = q.list();
System.out.println("list " + list);
if (list.size() != 0) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateSessionFactory.closeSession();
}
return false;
}

public static void main(String[] args) {
User u = new User("admin", "admin");
new UserDaoImpl().login(u);
}
}


LoginAction.java改为:
public String execute() {
System.out.println(user.getUsername() + "," + user.getPassword());
// String t = "admin";
boolean b = new UserDaoImpl().login(user);
System.out.println(b);
if (b) {
return SUCCESS;
}
this.addActionError("用户名密码错误!");
return ERROR;
}

照理来说没啥问题。
但是,登陆的时候,只能输出上面的打印信息,也没有报错,不知道怎么回事,返回也异常。

System.out.println("1111");
Session session = HibernateSessionFactory.getSession();
Query q = session
.createQuery("from User as a where a.username=? and a.password=?");
q.setString(0, user.getUsername());
q.setString(1, user.getPassword());
List list = q.list();
System.out.println("list " + list);
然后用一个单纯的java程序测试了一下,结果

部分代码:

public static void main(String[] args) {
User u = new User("admin", "admin");
new UserDaoImpl().login(u);
}

打印出了好多信息。。。。为什么之前没有打印出来,这里报错了。。。。
NoSuchMethodError: antlr.collections.AST.getLine()I

百度到了这篇http://www.cnblogs.com/songhaipeng/p/3323541.html,按照上面的方法,删除antlr2.7.2,之后运行正常。

再来测试web,一切正常。。。。。。

无语了。。

为什么异常信息有些没有在服务器打印出来。。。。。

总的来说,还是有收获的,有点曲折。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: