spring整合struts2+hibernate实现查询

第一篇博客啊,最近要做spring mvc的网站,就先熟悉一下spring整合hibernate,既然这样,就把struts2也加了进来,以备将来整合借鉴之用。


首先就是先创建一个新的WEB项目,

之后导入struts库,选择struts2.1和pattern的/*选项。

选择核心包和Spring包,核心包是必选的,Spring的包如果要和Spring整合,则是一定要选的。


之后创建四个包,action:业务层,dao:数据库操作,model:实体类,service:用来实现部分功能


在Login.jsp中加入以下代码,这是用struts框架的,可加可不加。

<%@ taglib prefix="s" uri="/struts-tags" %>

修改最上面的,可以显示中文

pageEncoding="utf-8"

同时插入,即登陆界面的代码
<body>
    <center>
    User Login<br>
    <s:form action="login.action" method="post">
    <s:textfield name="user.username" label="账号"></s:textfield>
    <s:password name="user.password" label="密码"></s:password>
    <s:submit value="登录"></s:submit>
    </s:form>
    </center>
  </body>
完成登录界面。


接下来在model中创建User.java实体类,

public class User {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

在action中创建LoginAction.java,用来进行登录时的用户判断

public class LoginAction {
	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	public String execute(){
		if(user.getUsername().equals(user.getPassword())){
			return "success";
			
		}
		return "fail";
	}
}


再对struts.xml进行编辑,用来编辑在登陆时的跳转页面,如果LoginAction验证正确,则返回LoginSuccess.jsp,否则则返回登陆界面。

<struts>
	<package name="strutsBean" extends="struts-default" namespace="/">
		<action name="login" class="action.LoginAction">
			<result name="success">/LoginSuccess.jsp</result>
			<result name="fail">/Login.jsp</result>
		</action>
	</package>
</struts>    

修改LoginSuccess.java,增加taglib和utf-8,同时增加

<s:property value="user.username" /> 登录成功。

加入Spring框架,Core Libraries是必选的,如果要和hibernate整合则要选择JDBC Libraries,它会自动选择以上选项。

用于web开发,所以Web Libraries也是要选择的

重新选择一下applicationContext.xml的位置,将它放到WebRoot/WEB-INF中,


在web.xml中增加一下代码,为了使程序在使用时调用spring进行监听。

<listener>
  	<listener-class>
  		org.springframework.web.context.ContextLoaderListener
  	</listener-class>
  </listener>
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>

在applicationContext中加入一个Login的bean,

<bean id="login" class="action.LoginAction" ></bean>
同时,把struts.xml中的class改成上面的id。意味着在struts进行判断是,会根据login这个id找到action.LoginAction,再根据LoginAction进行判断。

部署项目,看下结果


之后要进行整合hibernate:

加入hibernate,要选择用Spring进行配置

选择已存在的Spring配置文件

在选择数据库后,下一步,取消建立Session工程的类,因为可以直接在Spring的applicationContext.xml中显示。


建立User数据库后,建立反向工程

选择一下Id Generator,用来确定id是用什么方式来确定的,native是自选,计算机根据最适合的匹配算法。

在下一步中,一定要输入Class name 中的类的报名,不然会创建default package,并把实体类放到新创建的包中。记住啊。


移动UserDAO.java


创建UserDAO的interface,


在service中创建IUserService.java的接口文件,

public interface IUserService {
	public List<User> findAll();
	public User findById(Integer id);
	public void addUsers(User u);
	public void delUsers(User u);
	public void updateUsers(User u);
	public User login(String uname,String upass);
}
在service中在创建UserService.java 实现以上接口:

public class LoginUserService implements ILoginUserService {
	private ILoginUserDAO loginUserDAO=null;
	public ILoginUserDAO getLoginUserDAO() {
		return loginUserDAO;
	}

	public void setLoginUserDAO(ILoginUserDAO loginUserDAO) {
		this.loginUserDAO = loginUserDAO;
	}

	public List<LoginUser> findAll() {
		// TODO Auto-generated method stub
		return null;
	}

	public LoginUser fianById(Integer id) {
		// TODO Auto-generated method stub
		return null;
	}

	public void addUsers(LoginUser u) {
		// TODO Auto-generated method stub

	}

	public void delUsers(LoginUser u) {
		// TODO Auto-generated method stub

	}

	public void updateUsers(LoginUser u) {
		// TODO Auto-generated method stub

	}

	public LoginUser login(String uname, String upass) {
		// TODO Auto-generated method stub
		//System.out.println(uname);
		List users=loginUserDAO.findByUsername(uname);
		if(users.size()>0){
			for(int i=0;i<users.size();i++){
				LoginUser u = (LoginUser)users.get(i);
				if(upass.equals(u.getPassword()))
					return u;
			}
		}
		return null;
	}

}

修改LoginAction中的代码,加入IUserService,并修改判断用户名的代码

public class LoginAction {
	private User user;
	private IUserService userService; 

	public IUserService getUserService() {
		return userService;
	}

	public void setUserService(IUserService userService) {
		this.userService = userService;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	public String execute(){
		if(userService.login(user.getUsername(), user.getPassword())==null){
			return "fail";
			
		}
		return "success";
	}
}

修改applicationContext.xml,增加部分代码中的实例化:

<bean id="login" class="action.LoginAction">
		<property name="userService" ref="userService"></property>
	</bean>
	<bean id="userService" class="service.UserService">
		<property name="userDao" ref="UserDAO"></property>
	</bean>
    在上面,login中的property的userService对应代码中的userService,ref中的userService则对应后面bean中的id,是将后面的userService赋值到代码中的userService,从而减少的耦合度。后面的bean中的UserDao同理。
重新部署后,结果不变。
到这里已经实现了ssh的登录功能。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一.功能简介 1. 实现一个图书管理系统。图书信息存放到一个数据库中。图书包含信息:图书号、图书名、作者、价格、备注字段。 2. 系统要实现如下的基本管理功能: (1)用户分为两类:系统管理员,一般用户。 (2)提供用户注册和用户登录验证功能;其中登录用户的信息有:登录用户名,登录密码等。 (3)管理员可以实现对注册用户的管理(删除),并实现对图书的创建、查询、修改和删除等有关的操作。 (4)一般用户,只能查询图书,并进行借书、还书操作,每个用户最多借阅8本,即当目前借书已经是8本,则不能再借书了,只有还书后,才可以再借阅。 二.涉及技术 Struts2框架、Hibernate框架、MySQL数据库、C3P0数据池、Jsp、HTML、CSS、JavaScript等技术。 三.设计思路 1. 基于Struts2框架和Hibernate框架进行编程设计,连接MySQL数据库实现数据的增删查改,应用Jsp、HTML、CSS、JavaScript对访问页面进行编写和美化。 2. 分别创建book表和user表,用以存放图书信息和用户数据。其中user表中,设有flag以区分管理员和普通用户。 3. 分别创建Book类和User类,与数据表相对应。每本书和每个用户都有唯一的id与之对应。 4. 创建映射文件User.hbm.xml和Book.hbm.xml。 5. 创建数据库配置文件hibernate.cfg.xml。 6. 创建数据库连接工具类。 7. 设计数据库操作类:UserDao类和BookDao类。UserDao用于实现所有对user表的操作,BookDao用于实现所有对book表的操作。 8. 创建分别对应UserDao类和BookDao类的Action:UserAction和BookAction。采用基于注解的方式进行Action配置。 9. 用户账号分为管理员账号和普通用户账号,注册时加以区分,登录时即可自动判断进入对应的操作主页面。 10. 管理员可实现对用户的查询显示,模糊查询,删除,批量删除,全选和取消全选等功能;可实现对图书的查询显示,模糊查询,添加,删除,批量删除,全选和取消全选等功能。 11. 普通用户可实现借书和还书功能,借书功能通过对book表的查询,将未借出的图书按照id顺序排列显示,点击表格后方的“借阅”按钮,进行确认借阅,将book表中本书的borrowperson列的值改为本用户账号。对于借阅成功的图书可以在“当前借阅”中进行查看。还书功能通过在“当前借阅”中点击“还书”按钮,进行确认还书,将book表中本书的borrowperson列的值改为“空”,本书信息将可以在“借书”界面查看。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值