SSH2简单登录例子

使用的数据库表loginusers:

1、新建JavaWeb工程ssh2_login,添加com.pojo包(放置hibernate生成的POJO类)、com.dao包(放置数据库相关操作类)

com.action包(放置业务处理类)

2、右键项目添加spring开发能力,,勾选Spring Persistence类库

3、右键项目部署hibernate,取消生成的hibernate.cfg.xml文件改由spring分配id值管控

4、右键使用的数据库点击反向工程生成的POJO类及映射文件放于com.pojo包下

5、导入struts2 的九个基本jar包及spring支持包(spring支持包须与struts2核心包版本一致),建立path

6、修改web.xml配置文件,加入struts过滤器和spring配置信息

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
	http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	
	<filter>
		<filter-name>struts</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- servlet监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- spring配置信息 -->
	<context-param>
		<param-name>contextconfigLocation</param-name>
		<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
	</context-param>
	
	
  <display-name>ssh2_login</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

7、在WebRoot下新建编写login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
    <title>ssh2 login</title> 
  </head>
  
  <body>
   	<h2>USER LOGIN</h2>
   	<s:form action="validate" method="post">
   		<table>
   			<tr>
   				<s:textfield name="user.userName" label="Account"/>
   				<s:password name="user.password" label="Passsword"/>
   			</tr>
   			<tr>
   				<s:reset value="reset"/>
   				<s:submit value="sumbit"/>
   			</tr>
   		</table>
   	</s:form>
  </body>
</html>

8、在src>com>action下新建编写ValidateAction类完成验证的业务逻辑

package com.action;

import java.util.Map;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.dao.InterUserDao;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.pojo.Loginusers;

public class ValidateAction extends ActionSupport{
	private Loginusers user;

	public Loginusers getUser() {
		return user;
	}

	public void setUser(Loginusers user) {
		this.user = user;
	}
	
	public String execute()throws Exception{
		String account=user.getUserName();
		String password=user.getPassword();
		boolean flag=false;
		Loginusers user1=null;
		
		ActionContext context=ActionContext.getContext();
		Map session=context.getSession();
		user1=(Loginusers)session.get("user");
		
		if(user1==null){
			ApplicationContext acontext=new FileSystemXmlApplicationContext(
			"file:D:/JAVA-Develop/Workspaces/MyEclipse 2017 CI/ssh2_login/src/applicationContext.xml");
			InterUserDao interUserDao=(InterUserDao)acontext.getBean("userDaoImpl");
			user1=(Loginusers)interUserDao.validate(account, password);
			if(user1!=null){
				session.put("user",user1);
				flag=true;
			}
		}else{
			flag=true;
		}
		if(flag)
			return SUCCESS;
		else
			return ERROR;
	}
}

9、在src>com>dao下新建编写BaseDao基类(提供SessionFactory获取Session)、InterUserDao接口类、

UserDaoImpl接口实现类,实现用户验证

package com.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

public class BaseDao {
	
	 //BaseDao是Dao持久层访问SessionFactor获取session对象的中间组件
	//解耦Dao层与SessionFactory
	
	private SessionFactory sessionFactory;

	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	} 
	public Session getSession(){
		return sessionFactory.openSession();
	}
}
package com.dao;

import com.pojo.Loginusers;

public interface InterUserDao {
	public Loginusers validate(String name,String password);	//提供验证方法
}
package com.dao;

import java.util.Iterator;
import java.util.List;

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

import com.dao.BaseDao;
import com.pojo.Loginusers;

public class UserDaoImpl extends BaseDao implements InterUserDao{

	@Override
	public Loginusers validate(String name,String password) {
		// TODO Auto-generated method stub
		String hql="from Loginusers u where u.userName=? and u.password=?";
		Session session=getSession();	//从继承的类中获得session对象
		Query query=session.createQuery(hql);
		query.setParameter(0,name);
		query.setParameter(1, password);
		List list=query.list();
		Iterator it=list.iterator();
		while(it.hasNext()){
			if(list.size()!=0){
				Loginusers user=(Loginusers)it.next();
				return user;
			}
		}
		session.close();
		return null;
	}

}

10、在applicationContext.xml文件中配置好dao组件bean、数据库驱动属性信息的配置、action类bean,

其中BaseDao的SessionFactory属性中需关联SessionFactory的bean id值

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" xmlns:tx="http://www.springframework.org/schema/tx">

	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<!-- 配置数据库驱动 -->
		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
		
		<property name="url" value="jdbc:mysql://localhost:3306/"></property>
		<property name="username" value="root"></property>
		<property name="password" value="root123"></property>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/pojo/Loginusers.hbm.xml</value></list>
		</property>
	</bean>
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	
	<bean id="baseDao" class="com.dao.BaseDao">
		<property name="sessionFactory"><ref bean="sessionFactory"></ref></property>
	</bean>
	<bean id="userDaoImpl" class="com.dao.UserDaoImpl" parent="baseDao"></bean>
	<!-- <bean id="interUserDao" class="com.dao.InterUserDao"></bean> 不装配接口-->
	<bean id="validateAction" class="com.action.ValidateAction"></bean>
	
	<tx:annotation-driven transaction-manager="transactionManager" />
	
	</beans>
	
	

11、在src下新建struts.xml文件,设置action类信息

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
	<struts>
		<package name="default" extends="struts-default">
			<!-- 用户登录action -->
			<action name="validate" class="validateAction">
				<result name="success">/success.jsp</result>
				<result name="error">/error.jsp</result>
			</action>
		</package>
		<!-- <constant name="struts.i18n.encoding" value="gb2312"></constant> -->
	</struts>
 

12、在WebRoot下新建编写success.jsp成功页、error.jsp失败页

<%@ page language="java" import="java.util.*" import="com.pojo.Loginusers" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    
    <title>success.jsp</title>
  </head>
  
  <body>
  	<% 
  		Loginusers user=(Loginusers)session.getAttribute("user");
  		System.out.print(user);
  		String uName=user.getUserName();
  	 %>
    <h2>Welcome <%=uName %>,Login Success</h2>
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    
    <title>error.jsp</title> 
  </head>
  
  <body>
    <h2>Login Error</h2>
  </body>
</html>

13、保存启动Tomcat浏览器测试

猜你喜欢

转载自blog.csdn.net/zero_130/article/details/81223193
今日推荐