zoukankan      html  css  js  c++  java
  • struts2注册

     

    现在我们来做一个用户注册的例子,这个例子会涉及到后台数据库的操作,这在我以前Struts2的文章里面是没有提到过的,为此我们要多做些准备工作:首先我们将MysqlJDBC驱动包拷贝到Tomcat安装目录下的lib目录中,然后在MYSQLtest数据库下建立一张名为reg_user的表(为了避免乱码问题,注意编码方式设置为utf8),创建表的语句如下:

    create table reg_user

    (

    id int auto_increment,

    username varchar(20) not null,

    password varchar(20) not null,

    sex boolean,

    email varchar(20),

    pwd_question varchar(50),

    pwd_answer varchar(20),

    reg_date datetime,

    last_login_date datetime,

    last_login_ip varchar(20),

    primary key(id)

    )DEFAULT CHARSET=utf8 ;

     

    然后配置一下数据源,在WEB根目录的/META-INF子目录下编写配置文件context.xml:

    <?xml version="1.0" encoding="UTF-8"?>

    <Context reloadable="true">

       <Resource name="jdbc/test" auth="Container"

          type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"

       url="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8"

          username="root" password="123" maxActive="200" maxIdle="30"

          maxWait="-1" />

    </Context>

     

    有了它们,启动MYSQL服务器,在我们的JAVA应用程序中就可以利用JNDI的方式访问到MYSQLtest数据库了。下面我们一步一步完成咱们的注册程序(以后我们就不特别提醒大家导入jar包和配置web.xml)

     

    Step1:准备注册页面:register.jsp

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

       pageEncoding="UTF-8"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>Insert title here</title>

    </head>

    <body>

    <form action="register.action" method="post">

    <table>

       <tr>

          <td>用户名:</td>

          <td><input type="text" name="user.username"></td>

       </tr>

       <tr>

          <td>密码:</td>

          <td><input type="password" name="user.password"></td>

       </tr>

       <tr>

          <td>性别:</td>

          <td><input type="radio" name="user.sex" value="true" checked>

          <input type="radio" name="user.sex" value="false"></td>

       </tr>

       <tr>

          <td>邮件地址:</td>

          <td><input type="password" name="user.email"></td>

       </tr>

       <tr>

          <td>密码问题:</td>

          <td><input type="text" name="user.pwdQuestion"></td>

       </tr>

       <tr>

          <td>密码答案:</td>

          <td><input type="password" name="user.pwdAnswer"></td>

       </tr>

       <tr>

          <td><input type="submit" value="注册"></td>

          <td><input type="reset" value="重填"></td>

       </tr>

    </table>

    </form>

    </body>

    </html>

     

    success.jsp 用户注册成功,使用<s:property>标签获取用户的注册名,向用户显示成功信息

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

       pageEncoding="UTF-8"%>

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

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>Insert title here</title>

    </head>

    <body>

    <h1><s:property value="user.username" />,恭喜您注册老许的博客(http://www.blog.csdn.net/lenotang)成功。</h1>

    </body>

    </html>

     

    error.jsp 用户注册失败,输出exception对象

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

       pageEncoding="UTF-8"%>

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

    <%

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

    %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>Insert title here</title>

    </head>

    <body>

    注册失败,原因是:<s:property value="exception"/><br>

    <a href="<%=basePath%>register!default.action">重新注册</a>!

    </body>

    </html>

     

    Step2:编写与reg_user表对应的实体类

    package org.leno.struts2.model;

     

    import java.io.Serializable;

    import java.util.Date;

     

    public class User implements Serializable {

     

       private static final long serialVersionUID = 6663778172288542840L;

       private Integer id;

       private String username;

       private String password;

       private Boolean sex;

       private String email;

       private String pwdQuestion;

       private String pwdAnswer;

       private Date regDate;

       private Date lastLoginDate;

       private String lastLoginIp;

      

     

       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;

       }

     

       public Integer getId() {

          return id;

       }

     

       public void setId(Integer id) {

          this.id = id;

       }

     

       public Boolean getSex() {

          return sex;

       }

     

       public void setSex(Boolean sex) {

          this.sex = sex;

       }

     

       public String getEmail() {

          return email;

       }

     

       public void setEmail(String email) {

          this.email = email;

       }

     

       public String getPwdQuestion() {

          return pwdQuestion;

       }

     

       public void setPwdQuestion(String pwdQuestion) {

          this.pwdQuestion = pwdQuestion;

       }

     

       public String getPwdAnswer() {

          return pwdAnswer;

       }

     

       public void setPwdAnswer(String pwdAnswer) {

          this.pwdAnswer = pwdAnswer;

       }

     

       public Date getRegDate() {

          return regDate;

       }

     

       public void setRegDate(Date regDate) {

          this.regDate = regDate;

       }

     

       public Date getLastLoginDate() {

          return lastLoginDate;

       }

     

       public void setLastLoginDate(Date lastLoginDate) {

          this.lastLoginDate = lastLoginDate;

       }

     

       public String getLastLoginIp() {

          return lastLoginIp;

       }

     

       public void setLastLoginIp(String lastLoginIp) {

          this.lastLoginIp = lastLoginIp;

       }

    }

     

    Step3:编写数据访问类UserDAO封装数据访问细节

    package org.leno.struts2.model;

     

    import java.sql.Connection;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Timestamp;

    import java.util.ArrayList;

    import java.util.List;

    import javax.naming.Context;

    import javax.naming.InitialContext;

    import javax.naming.NamingException;

    import javax.sql.DataSource;

     

    public class UserDAO {

     

       private DataSource dataSource;

       /**

        * 切记:由于采用数据源连接池的方式(利用Tomcat提供的数据源实现)获取数据库的连接,因此需要

        * MysqlJDBC驱动包拷贝到Tomcat安装目录下的lib目录中

        */

       public UserDAO() {

          try {

             Context ctx = new InitialContext();

             dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/test");

          } catch (NamingException e) {

             // TODO Auto-generated catch block

             e.printStackTrace();

          }

       }

     

       public boolean register(User user) throws SQLException {

          boolean flag = false;

          Connection con = null;

          PreparedStatement ps = null;

          ResultSet rs = null;

          try {

             con = dataSource.getConnection();

             String sql = "insert into reg_user(username,password,sex,email,pwd_question,pwd_answer,reg_date) values(?,?,?,?,?,?,?)";

             ps = con.prepareStatement(sql);

             int index = 0;

             ps.setString(++index, user.getUsername());

             ps.setString(++index, user.getPassword());

             ps.setBoolean(++index, user.getSex());

             ps.setString(++index, user.getEmail());

             ps.setString(++index, user.getPwdQuestion());

             ps.setString(++index, user.getPwdAnswer());

             ps

                    .setTimestamp(++index, new Timestamp(user.getRegDate()

                          .getTime()));

             ps.execute();

             rs = ps.executeQuery("select last_insert_id()");

             if (rs.next()) {

                user.setId(rs.getInt(1));

                flag = true;

             } else {

                return flag;

             }

          } catch (SQLException e) {

             throw e;

          } finally {

             closeResultSet(rs);

             closePreparedStatement(ps);

             closeConnection(con);

          }

          return flag;

       }

     

       public List findAll() throws SQLException {

          List list = new ArrayList();

          Connection con = null;

          PreparedStatement ps = null;

          ResultSet rs = null;

          try {

             con = dataSource.getConnection();

             String sql = "select * from reg_user";

             ps = con.prepareStatement(sql);

             rs = ps.executeQuery();

             while (rs.next()) {

                User user = new User();

                user.setId(rs.getInt(1));

                user.setUsername(rs.getString(2));

                list.add(user);

             }

          } catch (SQLException e) {

             throw e;

          } finally {

             closeResultSet(rs);

             closePreparedStatement(ps);

             closeConnection(con);

          }

          return list;

       }

     

       private void closeResultSet(ResultSet rs) {

          if (rs != null) {

             try {

                rs.close();

             } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

             }

          }

       }

     

       private void closePreparedStatement(PreparedStatement ps) {

          if (ps != null) {

             try {

                ps.close();

             } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

             }

          }

       }

     

       private void closeConnection(Connection con) {

          try {

             if (con != null && !con.isClosed()) {

                con.close();

             }

          } catch (SQLException e) {

             // TODO Auto-generated catch block

             e.printStackTrace();

          }

       }

     

    }

     

    Step4:编写RegisterAction,调用UserDao来实现用户注册功能

    package org.leno.struts2.action;

     

    import java.util.Date;

    import java.util.Iterator;

    import java.util.List;

    import org.apache.struts2.dispatcher.RequestMap;

    import org.leno.struts2.model.User;

    import org.leno.struts2.model.UserDAO;

    import com.opensymphony.xwork2.ActionContext;

    import com.opensymphony.xwork2.ActionSupport;

     

    public class RegisterAction extends ActionSupport{

     

       private static final long serialVersionUID = 6254310773139650886L;

       private User user;

       private UserDAO userDao;

      

       public RegisterAction() {

          super();

          this.userDao = new UserDAO();

       }

     

       public User getUser() {

          return user;

       }

      

       public void setUser(User user) {

          this.user = user;

       }

     

       /**

        *请求/register!default.action,调用doDefault方法

        */

       @Override

       public String doDefault() throws Exception {

          return INPUT;

       }

     

       public String execute() throws Exception {

          user.setRegDate(new Date());

          System.out.println("**********"+user.getUsername());

          userDao.register(user);

    //    List userList = userDao.findAll();

    //    Iterator it = userList.iterator();

    //    while(it.hasNext()){

    //       User u = (User) it.next();

    //       System.out.println(u.getUsername());

    //    }

    //    ActionContext context = ActionContext.getContext();

    //    RequestMap request = (RequestMap) context.get("request");

    //    request.put("userList", userList);

          return SUCCESS;

       }

    }

     

    Step5:当然是在struts.xml上配置RegisterAction

    <?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 name="register"

             class="org.leno.struts2.action.RegisterAction">

             <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>

             <result name="success">/success.jsp</result>

                <result name="input">/register.jsp</result>

                <result name="error">/error.jsp</result>

          </action>

       </package>

    </struts>

     

    这样,我们一个简单的用户注册程序就开发完毕了。大家跑出来后就记住它,我们以后做的验证和I18N例子都会使用到这个程序。

                                 

  • 相关阅读:
    MariaDB 正则
    MariaDB 条件语句WHERE
    MariaDB SHOW,ANALYZE,CHECK
    eclipse的debug使用(转载)
    linux中vi编辑器(转载)
    centos6.4中文输入法安装和切换(转载)
    windows快捷键大全(转载)
    windows命令大全(转载)
    windows下route命令详解(转载)
    public,protected,private,static,final的区别(转载)
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663811.html
Copyright © 2011-2022 走看看