用Hibernate与Struts实现简单的项目的登录与注册
2015-11-22 20:36
751 查看
-首先在由于自己是新手,现在也是刚刚接触java的三大框架所以可能会出现一些问题希望各位大牛能给我指出,我必虚心的接受。
首先我是用的Hibernate的注解来实现的那么先搭建Hibernate的注解环境,我是先用反向工程来将实体类和其主配置文件Hibernate.cfg.xml文件然后将同时生成的hbm.xml文件移除,在同时在上面的properties中添加current_session_context_class值为thread主要是为后面的session的获取作准。
然后在实体类中写配置的属性例如
public void validateLogin(){
static SessionFactory sf=null;
static {
public Users login(String username,String password) throws Exception
{
Users u=null;
Transaction tx=null;
Session s=null;
try {
s=HibernateUtil.getSession();
tx=s.beginTransaction();
String hql=”from Users where name=? and password=?”;
Query query=s.createQuery(hql);
query.setString(0, username);
query.setString(1,password);
u=(Users)query.uniqueResult();
Map session=ActionContext.getContext().getSession();
session.put(“username”,u.getUsername());
tx.commit();
“`
注册需要注意的是在可以在Action中将其封装成USER类在数据访问层
代码如下当然在Action里应该实现注册的校验。
`public Integer register(Users u) throws Exception{
首先我是用的Hibernate的注解来实现的那么先搭建Hibernate的注解环境,我是先用反向工程来将实体类和其主配置文件Hibernate.cfg.xml文件然后将同时生成的hbm.xml文件移除,在同时在上面的properties中添加current_session_context_class值为thread主要是为后面的session的获取作准。
然后在实体类中写配置的属性例如
@Entity @Table(name="types") public class Types implements java.io.Serializable { // Fields @Id @GeneratedValue(generator="seqs",strategy=GenerationType.SEQUENCE) @SequenceGenerator(name="seqs",sequenceName="seq_id",allocationSize=1) private Integer id; @Column private String name; @OneToMany(mappedBy="types") private Set<House> houses = new HashSet<House>(0); 有没有能直接生成配置注解的方式我不知道,有知道的告诉我一声谢谢。 - 搭建Struts2的环境 首先在web.xml的的文件添加过滤器 <filter> <filter-name>users</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>users</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> - 在src下面编写主要的struts.xml文件 - `<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" > <struts> <constant name="struts.ui.theme" value="simple"/> <constant name="struts.i18n.encoding" value="utf-8"/> <package name="default" namespace="/" extends="struts-default"> <default-action-ref name="defaultAction"/> <action name="defaultAction"> <result>/page/error.jsp</result> </action> <action name="user" class="cn.action.UserAction"> <result name="success">/page/manage.jsp</result> <result name="error">/page/login.jsp</result> <result name="input">/page/login.jsp</result> </action> <action name="users" class="cn.action.UserAction"> <result name="success">/page/success.jsp</result> <result name="error">/page/register.jsp</result> <result name="input">/page/register.jsp</result> </action> </package> </struts> - 这里struts的环境搭建好 这里要实现其业务逻辑 在jsp页面的action的映射中可以将jsp页面的数据传输过去不过ID要一样 在这个类中在实现字段的get,set方法。 在action的编写中需要继承ActionSupport(为了实现服务端校验功能) 重写validateLogin的方法可以实现校验功能将错误放入到FieldError标签中
public void validateLogin(){
if(username.trim().length()==0) { this.addFieldError("errorname", "用户名不能为空"); } if(password.trim().length()==0) { this.addFieldError("errorpwd", "密码不能为空"); } }
- 实现dao层的数据访问 这里获得Session的方法如下
static SessionFactory sf=null;
static {
AnnotationConfiguration cf = new AnnotationConfiguration().configure(); sf=cf.buildSessionFactory(); } public static Session getSession(){ return sf.getCurrentSession(); }
> 这里是登录的数据访问的代码由于session的获取方式所以必须开启事物。
public Users login(String username,String password) throws Exception
{
Users u=null;
Transaction tx=null;
Session s=null;
try {
s=HibernateUtil.getSession();
tx=s.beginTransaction();
String hql=”from Users where name=? and password=?”;
Query query=s.createQuery(hql);
query.setString(0, username);
query.setString(1,password);
u=(Users)query.uniqueResult();
Map session=ActionContext.getContext().getSession();
session.put(“username”,u.getUsername());
tx.commit();
} catch (Exception e) { throw new Exception(e); } return u; }
“`
注册需要注意的是在可以在Action中将其封装成USER类在数据访问层
代码如下当然在Action里应该实现注册的校验。
`public Integer register(Users u) throws Exception{
int result=0; Session s=HibernateUtil.getSession(); Transaction tx=s.beginTransaction(); try { result=(Integer)s.save(u); tx.commit(); } catch (Exception e) { throw new Exception(e); } return result; }
相关文章推荐
- 【SpringMVC系列三】 EasyUI +springMVC 乱码问题
- 【SpringMVC系列二】 EasyUI+SpringMVC--Maven项目--WEB-INF安全目录访问jsp
- 【SpringMVC系列一】 EasyUI + SpringMVC 解决静态资源访问
- Eclipse改变字符串大小写快捷键
- spring开发时所遇的乱码问题
- struts2验证框架1
- [2015/11/22] Hadoop的一些配置 和 Eclipse导入Hadoop工程步骤 -自用-
- javaSE7有关异常处理有关
- 关于使用Spring声明式事务时,在类的内部方法互相调用时,Spring无法拦截内部方法调用,导致事务不起作用的问题研究
- JAVA解析XML文件(四)---DOM4J方式解析
- JAVA解析XML文件(三)---JDOM方式解析
- Java有没有goto?
- 关于Eclipse(64位)下aptana插件安装报错问题解决
- ubuntu14.04 JDK 安装
- Spring MVC 入参支持数组
- java数据封装
- 使用Spring Roo构建项目
- JAVA解析XML文件(二)---SAX方式解析
- java线程内存可见性-实现方式
- Comparable_Comparator_排序工具类JAVA124-125