使用Struts整合Hibernate实现用户登录

一、Dynamic Web Project

struct必须是动态网页,而Hibernate可以使用静态网页实现,两者结合使用动态。

在创建动态网页时,记得勾选Generate web.xml deployment descripor,创建web.xml配置文件。
如果你忘记勾选,也可以这样:
Dynamic Web Project右击->Java EE Tools->Generate deployment 就可以了。

二、导入两者需要的jar包。

在WebContent->WEB-INF下的lib目录中
struts需要的jar包:

使用Struts整合Hibernate实现用户登录_第1张图片
和hibernate需要的jar包:使用Struts整合Hibernate实现用户登录_第2张图片
记得build Path

三、配置xml文件

配置web.xml文件的作用就是,实现过滤器,成为struts2的入口。
不出意外,应该可以直接粘:



  struts
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
  
   struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  
  
   struts2
   /*  
  

四、hibernate.cfg.xml

放在src目录下。
hibernate.cfg.xml:作用是连接数据库,然后找到数据库中的表。
然后,数据库中的表会映射实体类。








	root
	
		jdbc:mysql://localhost:3306/hibernate 
	
	
		org.hibernate.dialect.MySQLDialect
	
	123
	
		com.mysql.jdbc.Driver
	
	true
	true
	




使用Struts整合Hibernate实现用户登录_第3张图片

User实体类这样写:
和数据库对应

package com.tjetc.domain;

public class User {
	private int id;
	private String name;
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
	}
		
}
}

五、User.hbm.xml

实体类映射对象
放在这里:使用Struts整合Hibernate实现用户登录_第4张图片
这样写:




	
		
			  
		
		
		
	


六、创建登录页面

在WebContent目录下创建。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	
用户名: 密码:

其中的action=“login” 是将表单内容传入到login函数中,如下:

七、创建LoginAction.java

使用Struts整合Hibernate实现用户登录_第5张图片
代码如下:
作用获取用户输入的用户名和密码

package com.tjetc.action;

import org.apache.struts2.ServletActionContext;

import com.tjetc.dao.UserDao;
import com.tjetc.domain.User;

public class LoginAction {
	private String name;
	private String password;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String login() {//在这里接收用户输入的用户名和密码
		System.out.println(name);
		System.out.println(password);
		//创建UserDao对象
				UserDao userDao = new UserDao();
				User user=userDao.getByUsername(name);	//这里用到UserDao是操作数据库的,下面会有。
				System.out.println(user);
				if (user==null) {//没有改用户名
					System.out.println("该用户名不存在");
					return "login";			
				}else{
					if (!password.equals(user.getPassword())) {
						System.out.println("密码错误");
						return "login";	
					}else {
						ServletActionContext.getRequest().getSession().setAttribute("user", user);
						return "success";
					}
				}
	}
}


八、配置struts.xml




	
		
			/success.jsp
			/login.jsp!--login() 函数返回login的话,就会跳转到login.jsp页面-->
		
	

简易设置success.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


登录成功!


此时运行login.jsp
输入用户名,密码。点击提交,出现如下画面,则测试成功。
使用Struts整合Hibernate实现用户登录_第6张图片

九、使用数据库,进行数据访问

呜呜呜呜,因为mysql的配置和包的问题卡了超级久。。。
我的mysql是8.0.19的,那些包是5.几的,所有一些方面就存在一些问题。
最后的时候会说一下。
下面是UserDao

package com.tjetc.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.tjetc.domain.User;

public class UserDao {
	public User getByUsername(String username) {
		SessionFactory factory = new Configuration().configure().buildSessionFactory();
		Session session = factory.openSession();
		User user = (User) session.createQuery("from User u where u.name=?").setString(0, username).uniqueResult();
		session.close();
		return user;
	}
}
//第一句是加载映射,创建会话工程对象
//第二句是创建会话对象
//第三句是在mysql中寻找name=用户输入的name的User对象(name不重复)
//关闭会话
//返回user

在mysql有数据的情况,运行login登录,没问题的话,你超厉害的!!!

我遇到的问题。呜呜呜

关于mysql8.0和5.0的问题。
首先我的是8.0.19.老师给的都是5的包。
这时候,把lib下的mysql-connector-java-5.1.7-bin.jar包换成mysql-connector-java-8.0.13.jar。注意要把5.1的删干净。把8.0的build path。

然后在hibernate.cfg.xml这个连接数据库的配置文件中,把这句话
jdbc:mysql://localhost:3306/hibernate
(hibernate是数据库名称)
换成
jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT

然后,把下面的驱动 com.mysql.jdbc.Driver换成
com.mysql.cj.jdbc.Driver
使用Struts整合Hibernate实现用户登录_第7张图片
这大概就是我心酸的历程吧。5555555
努力呀。

一个集坚强与自信于一身的菇凉。

你可能感兴趣的:(struts2,struts2)