java+struts+spring验证用户名是否存在

        最近学习了java语言,搭了一下struts框架,现在用一个验证用户名的小例子总结下:

首先先编写下显示界面(具体代码就先不在这写啦),


效果图如下:




编写验证用户名是否存在的方法:

<span style="font-family:KaiTi_GB2312;font-size:18px;">package cn.itcast.shop.user.action;

import java.io.IOException;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import cn.itcast.shop.user.service.UserService;
import cn.itcast.shop.user.vo.User;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.sun.mail.iap.Response;
import com.sun.org.apache.bcel.internal.generic.NEW;

public class UserAction extends ActionSupport implements ModelDriven<User> {
	// 注入UserService
	private UserService userService;
	// 模型驱动使用的对象
	private User user = new User();

	public User getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	/**
	 * 跳转注册页面的执行方法
	 */

	public String registPage() {
		return "registPage";
	}

	/***
	 * AjAX进行异步校验用户名的执行方法
	 * 
	 * @throws IOException
	 * 
	 */
	public String findByName() throws IOException {
		// 调用service进行查询
		User existUser = userService.findByUsername(user.getUsername());

		// 获得response对象,页面输出:
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType("text/html;charset=UTF-8");

		if (existUser != null) {
			// 查询到该用户,用户名已经存在
			response.getWriter().println("<font color='red'>用户名已经存在</font>");
		} else {
			// 查询到该用户,用户名可以使用
			response.getWriter().println("<font color='green'>用户名可以使用</font>");
		}
		return null;
	}

	private void getResponse() {
		// TODO Auto-generated method stub
	}

	/**
	 * 用户注册的方法
	 */

	public String regist() {
		return NONE;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}
}
</span>


用户模块业务层代码
<span style="font-family:KaiTi_GB2312;font-size:18px;">package cn.itcast.shop.user.service;

import javax.mail.MessagingException;

import org.springframework.transaction.annotation.Transactional;

import cn.itcast.shop.user.dao.UserDao;
import cn.itcast.shop.user.vo.User;
import cn.itcast.shop.utils.MailUitls;
import cn.itcast.shop.utils.UUIDUtils;

/***
 * 用户模块业务层代码
 * 
 * @author X
 * 
 */
@Transactional
public class UserService {

	// 注入UserDao
	private UserDao userDao;

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	// 用户名查询用户的方法
	public User findByUsername(String username) {
		return userDao.findByUserName(username);
	}
	
	//业务层完成用户注册代码
	
	public void save(User user){
		user.setState(0);//0
		String code=UUIDUtils.getUUID()+UUIDUtils.getUUID();	
		user.setCode(code);
		userDao.save(user);
		
		//发送激活邮件
		try {
			MailUitls.sendMail(user.getEmail(), code);
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}
</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">
</span>
用户模块持久层代码

<span style="font-family:KaiTi_GB2312;font-size:18px;">package cn.itcast.shop.user.dao;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.itcast.shop.user.vo.User;

/**
 * 用户模块持久层代码
 * 
 * @author X
 * 
 */

public class UserDao extends HibernateDaoSupport {

	// 按照名次查询是否有该用户
	public User findByUserName(String username) {
		String hql = "from User where username=?";
		List<User> list = this.getHibernateTemplate().find(hql, username);
		if (list != null && list.size() > 0) {
			return list.get(0);
		}

		return null;
	}

	//注册用户存入数据库
	public void save(User user) {
		this.getHibernateTemplate().save(user);
		
	}

}
</span>



这两个代码写好之后,开始进行配置:


首先是struts文件:


<span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

	 <constant name="struts.devMode" value="false" />

	<!-- <package name="SSH-shop" extends="struts-default" namespace="/WebRoot"> --></span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">       //package的名称是你项目中的名称,这里namespace的路径要写对,注意相对路径的
	<package name="SSH-shop" extends="struts-default" namespace="/">
		<!-- 配置首页访问的Action -->
		<action name="index" class="indexAction">
			<result name="index">/WEB-INF/jsppackage/index.jsp</result>
		</action>

		<!-- 用户模块的Action -->
		<action name="user_*" class="userAction" method="{1}">
			<result name="registPage">/WEB-INF/jsppackage/regist.jsp</result>
		</action>
		
		<!-- 验证码Action -->
		<action name="checkImg" class="checkImgAction"></action>
	</package>
</struts>
</span>



配置spring文件:


<span style="font-family:KaiTi_GB2312;font-size:18px;"><?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:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx.xsd">

	<!-- 配置连接池: -->
	<!-- 引入外部属性文件 -->
	<context:property-placeholder location="classpath:jdbc.properties" />
	<!-- 配置C3P0连接池: -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driver}" />
		<property name="jdbcUrl" value="${jdbc.url}" />
		<property name="user" value="${jdbc.user}" />
		<property name="password" value="${jdbc.password}" />
	</bean>

	<!-- Hibernate的相关信息 -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 注入连接池 -->
		<property name="dataSource" ref="dataSource" />
		<!-- 配置Hibernate的其他的属性 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.connection.autocommit">false</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
		<!-- 配置Hibernate的映射文件 -->
		<property name="mappingResources">
			<list>
				<value>cn/itcast/shop/user/vo/User.hbm.xml</value>
			</list>
		</property>
	</bean>

	<!-- 事务管理: -->
	<!-- 事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- 开启注解事务 -->
	<tx:annotation-driven transaction-manager="transactionManager" />

	<!-- Action的配置 =========================== -->

	<!-- 首页访问的Action -->
	<bean id="indexAction" class="cn.itcast.shop.index.action.IndexAction"
		scope="prototype">
	</bean>

	<!-- 用户模块的Action -->
	<bean id="userAction" class="cn.itcast.shop.user.action.UserAction"
		scope="prototype">
		<!-- 注入Service -->
		<property name="userService" ref="userService" />
	</bean>

	<!-- Service的配置=========================================================== -->
	<bean id="userService" class="cn.itcast.shop.user.service.UserService">
		<property name="userDao" ref="userDao" />
	</bean>

	<!-- Dao的配置=========================================================== -->
	<bean id="userDao" class="cn.itcast.shop.user.dao.UserDao">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

	<!-- 配置验证码Action -->
	<bean id="checkImgAction" class="cn.itcast.shop.user.action.CheckImgAction"
		scope="prototype">
	</bean>
</beans>
</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">
</span>
<span style="font-family:KaiTi_GB2312;font-size:24px;color:#3366ff;">
</span>
效果图:






         整个流程就完成了,初步学习,具体的东西还理得不是很清楚,有错误请指出。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值