运用struts2框架实现登陆注册
来源:互联网 发布:德国oshadhi知乎 编辑:程序博客网 时间:2024/05/10 13:24
刚刚学完struts2框架,趁热打铁,做了个struts2MVC小项目练练手。主要用到了struts2的机制实现了登陆注册,
1.字符串到POJO类型的转换,
2.利用i18n拦截器实现了中英文国际化,
3.利用validate拦截器框架效验实现服务器端输入验证,
4.struts2标签库以及利用自定义拦截器实现权限控制(第四条下篇博客再进行介绍)
建完项目后,要引入jar包,我们用myeclipse自带的struts2jar包就ok,右键工程->MyEclipse->Project Faset->strutr2.x 完成之后就成功导入jar包
5.国际化实现之后,有三种方式实现中英文切换,前两种太过死板,第三种最灵活(推荐使用)
1>.直接在浏览器中修改浏览器语言
2>.在代码中设置locale属性。在struts.xml中加一个静态值(此方法虽然最简便,但不是长久之计)
代码:
<constant name="struts.locale" value="zh_CN"></constant>
<span style="white-space:pre"></span>若设置美国英文,将value值改为:en_US3>.实现动态国际化,在页面中加入超连接的形式来实现,具体实现参见:点击打开链接
工程截图如下:
运行界面:
一、数据库介绍
用mysql实现
一个用户表,三个字段,
varchar类型的userName,password
int类型的role用来设置权限(此篇博客暂时没用到)
数据库表截图如下:
二、首先实现登陆页面
可以用struts2框架自带的标签库来定义,我用的html标签实现的,因为要实现国际化,框架效验,以及POJO的类型转化,所以还要引入struts2的标签库。
引入库的代码为:
<%@ taglib uri="/struts-tags" prefix="s" %>代码如下:
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %><%@ page import="com.user.bean.User" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title><s:text name="title_login"></s:text></title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> </head> <body> <div><s:fielderror /></div> <form action="loginAction" method="post" name="form1"> <table align="center"> <tr> <td><s:text name="username"></s:text></td> <td><input type="text" name="user.userName"></td> </tr> <tr> <td><s:text name="password"></s:text></td> <td><input type="password" name="user.password"></td> </tr> <tr> <%--struts标签这样写 <td colspan="2"><s:radio name="user.role" list="#{'0':'普通用户','1':'管理员'}"/></td> --%> <td>普通用户:<input type="radio" name="user.role" value="0"></td> <td>超级用户:<input type="radio" name="user.role" value="1"></td> </tr> <tr> <td><input type="submit" value=<s:text name="submit"></s:text>></td> <td><input type="reset" value=<s:text name="reset"></s:text>> <input type="button" value=<s:text name="regist"></s:text> onclick="window.location.href='Page/register.jsp'"></td> </tr> </table> <s:actionerror/> </form> </body></html>register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"><title><s:text name="title_regist"></s:text></title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> </head> <body> <form action="registAction" method="post" name="form1"> <table align="center"> <tr> <td><s:text name="username"></s:text></td> <td><input type="text" name="user.userName"></td> </tr> <tr> <td><s:text name="password"></s:text></td> <td><input type="password" name="user.password"></td> </tr> <tr> <td>普通用户:<input type="radio" name="user.flag" value="0"></td> <td>超级用户:<input type="radio" name="user.flag" value="1"> </td> </tr> <tr> <td><input type="submit" value=<s:text name="regist"></s:text>></td> <td><input type="reset" value=<s:text name="reset"></s:text>></td> </tr> </table> <s:actionerror/> </form> </body></html>com.user.bean包下实体类:
User.java
package com.user.bean;public class User {private int role;private String userName;private String password;/** * @return the role */public int getRole() {return role;}/** * @param role the role to set */public void setRole(int role) {this.role = role;}/** * @return the userName */public String getUserName() {return userName;}/** * @param userName the userName to set */public void setUserName(String userName) {this.userName = userName;}/** * @return the password */public String getPassword() {return password;}/** * @param password the password to set */public void setPassword(String password) {this.password = password;}}com.user.action包下UserAction.java
package com.user.action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.user.bean.User;import com.user.dao.UserDao;import com.user.dao.UserDaoImpl;public class UserAction extends ActionSupport{private static final long serialVersionUID = 1L;private User user;private UserDao userDao = new UserDaoImpl();public User getUser() {return user;}public void setUser(User user) {this.user = user;}//注册public String regist(){UserDaoImpl dao = new UserDaoImpl();int i = dao.Register(user);if(i!=-1){return SUCCESS;}else{return ERROR;}}//登陆验证public String login(){User checkUser = userDao.userLogin(user.getUserName(),user.getPassword(),user.getRole());if(null == checkUser){return ERROR;}else{ActionContext.getContext().put("tip", getText("success"));ActionContext.getContext().put("username", user.getUserName());return SUCCESS;}}//重写validate方法,完成输入效验/* (non-Javadoc) * @see com.opensymphony.xwork2.ActionSupport#validate() */@Overridepublic void validate() {//如果用户名为空或为空字符串,则添加错误信息if(user.getUserName() == null||user.getUserName().trim().equals("")){//添加表单效验错误信息addFieldError("username", "输入的用户名不能为空");}//如果密码为空或为空字符串,则添加错误信息if(user.getPassword()==null ||user.getPassword().trim().equals("")){addFieldError("password", "输入的密码不能为空");}}}com.user.dao包下
UserDao.java
package com.user.dao;import com.user.bean.User;public interface UserDao {//用户登陆 public User userLogin(String userName,String password,int role);//用户注册public int Register(User user);}UserDaoImpl.java
package com.user.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.user.bean.User;import com.user.util.DBConnection;public class UserDaoImpl implements UserDao {@Overridepublic User userLogin(String userName,String password,int role) {Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;User user = null;//获得链接conn = DBConnection.getConn();//准备String sql_userCheck="select userName,password,role from user where userName=? and password=? and role=?";try {pstmt = conn.prepareStatement(sql_userCheck);pstmt.setString(1, userName);pstmt.setString(2, password);pstmt.setInt(3, role);rs = pstmt.executeQuery();if(rs.next()){user = new User();user.setUserName(rs.getString("userName"));user.setPassword(rs.getString("password"));user.setRole(rs.getInt("role"));System.out.println(user.getUserName());System.out.println(user.getPassword());System.out.println(user.getRole());}} catch (SQLException e) {System.out.println("登陆错误!");e.printStackTrace();} finally{DBConnection.closeConn(conn);DBConnection.closeStatement(pstmt);DBConnection.closeResult(rs);}return user;}@Overridepublic int Register(User user) {int i=-1;Connection conn = null;PreparedStatement pstmt = null;try{//获得链接conn = DBConnection.getConn();//准备String sql_userCheck="INSERT INTO user (user.userName,user.password,user.flag) VALUES(?,?,?)";pstmt = conn.prepareStatement(sql_userCheck);pstmt.setString(1, user.getUserName());pstmt.setString(2, user.getPassword());pstmt.setInt(3, user.getRole());i = pstmt.executeUpdate();}catch(SQLException e){System.out.println("注册错误");e.printStackTrace();}finally{DBConnection.closeConn(conn);DBConnection.closeStatement(pstmt);}return i;}}com.user.util包下
DBConnection.java
package com.user.util;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;/** * 数据库连接和关闭 * @author yl * */public final class DBConnection {private static String DRIVER;private static String URL;private static String USER;private static String PWD;private static Properties pr = new Properties();static{try {pr.load(DBConnection.class.getClassLoader().getResourceAsStream("db.properties"));DRIVER = pr.getProperty("driver");URL = pr.getProperty("url");USER = pr.getProperty("user");PWD = pr.getProperty("pass");} catch (IOException e) {System.out.println("加载资源文件错误");e.printStackTrace();}}//1.注册驱动static{try {Class.forName(DRIVER);} catch (ClassNotFoundException e) {System.out.println("注册驱动失败!");e.printStackTrace();}}//2.获得连接public static Connection getConn(){Connection conn = null;try {conn = DriverManager.getConnection(URL, USER, PWD);} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库连接失败");e.printStackTrace();}return conn;}//3.关闭连接public static void closeConn(Connection conn){if(conn!=null){try {conn.close();} catch (SQLException e) {System.out.println("关闭连接失败");e.printStackTrace();}}}//4.关闭执行对象public static void closeStatement(Statement stmt){if(stmt!=null){try {stmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}//5.关闭结果集public static void closeResult(ResultSet rs){if(rs!=null){try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}db.properties
driver=com.mysql.jdbc.Driverurl=jdbc\:mysql\://localhost\:3306/user_manageruser=rootpass=root
i18n_en_US.properties
userName=User Name\uFF1Apassword=Password\uFF1Atitle_login=Login Pagesubmit=Submitreset=Resetregist=Registsuccess=Congratulations {0}\uFF0CLogin success\uFF01
i18n_zh_CN.properties
username=\u7528\u6237\u540D\uFF1Apassword=\u5BC6\u7801\uFF1Atitle_login=\u767B\u9646\u9875\u9762submit=\u767B\u9646reset=\u91CD\u7F6Eregist=\u6CE8\u518Csuccess=\u606D\u559C{0}\uFF0C\u767B\u9646\u6210\u529F\uFF01
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><constant name="struts.custom.i18n.resources" value="i18n"></constant><constant name="struts.locale" value="zh_CN"></constant><package name="userManager" extends="struts-default"><action name="loginAction" class="com.user.action.UserAction" method="login"><result name="success">/WEB-INF/Page/loginSuccess.jsp</result><result name="error">/WEB-INF/Page/loginFailed.jsp</result><result name="input">/Page/login.jsp</result></action><action name="registAction" class="com.user.action.UserAction" method="regist"><result name="success">/Page/login.jsp</result><result name="error">/Page/register.jsp</result><result name="input">/Page/register.jsp</result></action></package></struts>
3 1
- 运用struts2框架实现登陆注册
- struts2+hibernate4实现简单的注册登陆
- Struts2实现框架注册登录
- Struts2和hibernate框架整合实现简单的注册登陆功能
- 运用Struts2数据验证实现注册表单验证
- Spring3整合Struts2+Hibernate 实现注册、数据库验证登陆
- Struts2连接数据库实现登陆(验证码)、注册
- 运用Struts1框架来简单实现登陆跳转
- Eclipse用SSH框架实现登陆注册功能
- 登陆注册如何实现
- okhttp3实现注册登陆
- 集合实现注册登陆
- 登陆注册实现流程
- Mvp实现登陆注册
- MVP实现登陆注册
- MVP实现登陆注册
- 一个简单实现登陆控制的struts2框架
- express框架的注册登陆
- Android开发&send email
- spring文件
- tcp长连接和保活时间
- 35 个 jQuery 小技巧
- MySQL数据库性能优化之缓存参数优化
- 运用struts2框架实现登陆注册
- ZuoyeNo-03
- poj2195最小权值二分匹配KM算法
- swift学习Day03
- SQL数据库建立
- android手势操作事件处理
- LeetCode—260 Single Number III
- Ubuntu14.04安装Octave
- i从本质上认识i++与++i