最近学习了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>
效果图:
整个流程就完成了,初步学习,具体的东西还理得不是很清楚,有错误请指出。