- 浏览: 169825 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
kingding:
运行出错,java.lang.Exception: java. ...
hadoop--mapreduce代码之多表关联 -
wangyayun666:
不错,不错,学习了,我的居然运行起来了,太神奇了,之前报了一个 ...
hadoop--mapreduce代码:WordCount -
good_ovo:
有读取的文件吗?
hadoop--mapreduce代码之单表关联 -
hongye612430:
http://serisboy.iteye.com/admin ...
appscan 安全漏洞修复 -
ssrsmhz:
serisboy 写道blackbat 写道请问楼主,这个问题 ...
appscan 安全漏洞修复
在前面demo的基础上再做一个涉及数据库访问,分层结构的简单用户登录注册例子,步骤如下:
1.新建user表,sql语句如下
2.新建注册页面register.jsp,登录的页面还是前面的index.jsp,两者很相似
3.导入所需要的包mysql-connector-java(jdbc驱动),spring里的jdbc,transaction包,commoms-dbcp,commons-pool(两者配合使用完成数据库连接池),导入完成后要在spring配置文件中进行配置,配置文件在后面给出
4.由于用户注册需对密码进行md5加密,所以先给出md5加密的工具类Md5Encode.java,此文件为网上看到的,直接拿来用的
5.在程序里添加dao,model与service(前面例子已经添加过)
加好后,先在model package里加入实体类Usre.java
dao与Service里最好加上接口包,在这里,我只在dao里加了接口包,并在里面写了dao接口类IUserDao.java
下面是实现接口的UserDao.java
有些方法加上了,没实现,其中对数据库的操作是使用了spring里封装的jdbc
最后就是Service了,我把登录和注册写成了两个Service类,好的做法应该写成一个UserService类,里面写两个方法就可以了
既然写了两个文件,就都贴出来吧
RegisterService.java
6.在编写完分层后,添加ReigsterAction.java并修改前面的LoginAction.java
7.配置struts.xml,配置新的action
8.最后给出最重要的spring配置文件applicationContext.xml
从上面明显可以看出层之间的依赖关系,action-->service-->dao--->jdbc模板--->数据源
1.新建user表,sql语句如下
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `name` char(128) NOT NULL, `credits` int(11) default '0', `password` varchar(32) NOT NULL, `last_visit` datetime default NULL, `last_ip` varchar(23) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2.新建注册页面register.jsp,登录的页面还是前面的index.jsp,两者很相似
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% 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>My JSP 'register.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="Register" method="post"> <Table> <Tr> <td>用户名:</Td> <td><input type="text" name="username" /></Td> </Tr> <Tr> <td>密码:</Td> <td><input type="password" name="password" /></Td> </Tr> <Tr> <td><input type="submit" name="submit" value="注册"/></Td> <td><input type="reset" name="reset" value="重置"/></Td> </Tr> </Table> </form> </body> </html>
3.导入所需要的包mysql-connector-java(jdbc驱动),spring里的jdbc,transaction包,commoms-dbcp,commons-pool(两者配合使用完成数据库连接池),导入完成后要在spring配置文件中进行配置,配置文件在后面给出
4.由于用户注册需对密码进行md5加密,所以先给出md5加密的工具类Md5Encode.java,此文件为网上看到的,直接拿来用的
package com.struts2.util; import java.security.MessageDigest; public class Md5Encode { private final static String[] hexDigits={ "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}; public static String byteArrayToHexString(byte[] b){ StringBuffer resultSb=new StringBuffer(); for(int i=0;i<b.length;i++){ resultSb.append(byteToHexString(b[i])); } return resultSb.toString(); } private static String byteToHexString(byte b){ int n=b; int d1=0; int d2=0; if(n<0){ n=256+n; d1=n/16; d2=n%16; } return hexDigits[d1]+hexDigits[d2]; } public static String MD5Encode(String origin){ String resultString=null; try{ resultString=new String(origin); MessageDigest md=MessageDigest.getInstance("MD5"); resultString=byteArrayToHexString(md.digest(resultString.getBytes())); }catch(Exception e){ } return resultString; } }
5.在程序里添加dao,model与service(前面例子已经添加过)
加好后,先在model package里加入实体类Usre.java
package com.struts2.model; import java.io.Serializable; import java.util.Date; public class User implements Serializable{ private int uid; private String username; private String password; private int credits; private String lastIp; private Date lastVisit; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } 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 int getCredits() { return credits; } public void setCredits(int credits) { this.credits = credits; } public String getLastIp() { return lastIp; } public void setLastIp(String lastIp) { this.lastIp = lastIp; } public Date getLastVisit() { return lastVisit; } public void setLastVisit(Date lastVisit) { this.lastVisit = lastVisit; } }
dao与Service里最好加上接口包,在这里,我只在dao里加了接口包,并在里面写了dao接口类IUserDao.java
package com.struts2.dao.impl; import com.struts2.model.User; public interface IUserDao { public void addUser(User user); public void delUser(User user); public User findUserByName(String username); public void updateUser(User user); public boolean checkUser(String username,String password); public boolean register(User user); }
下面是实现接口的UserDao.java
package com.struts2.dao; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import com.struts2.dao.impl.IUserDao; import com.struts2.model.User; public class UserDao implements IUserDao { private JdbcTemplate jdbcTemplate; //注入 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void addUser(User user) { // TODO Auto-generated method stub } public void delUser(User user) { // TODO Auto-generated method stub } public User findUserByName(String username) { // TODO Auto-generated method stub return null; } public void updateUser(User user) { // TODO Auto-generated method stub } public boolean checkUser(String username, String password) { // TODO Auto-generated method stub System.out.println(password); String sql="select count(*) from user where name=? and password=? "; int count=jdbcTemplate.queryForInt(sql,new Object[]{username,password}); return count>0; } public boolean register(User user) { // TODO Auto-generated method stub System.out.println("beign dao"); String sql="insert into user (name,credits,password,last_visit,last_ip) values (?,?,?,?,?)"; Object[] args={user.getUsername(),user.getCredits(),user.getPassword(),user.getLastVisit(),user.getLastIp()}; try{ jdbcTemplate.update(sql, args); }catch (DataAccessException e) { e.printStackTrace(); return false; } return true; } }
有些方法加上了,没实现,其中对数据库的操作是使用了spring里封装的jdbc
最后就是Service了,我把登录和注册写成了两个Service类,好的做法应该写成一个UserService类,里面写两个方法就可以了
既然写了两个文件,就都贴出来吧
LoginService.java package com.struts2.service; import com.struts2.dao.UserDao; import com.struts2.model.User; public class LoginService { private UserDao userdao; public boolean login(User user) throws Exception{ boolean flag=false; if(userdao.checkUser(user.getUsername(), user.getPassword())){ flag=true; } return flag; } public void setUserdao(UserDao userdao) { this.userdao = userdao; } }
RegisterService.java
package com.struts2.service; import com.struts2.dao.UserDao; import com.struts2.model.User; public class RegisterService { private UserDao userDao; public boolean Register(User user){ System.out.println("begin Service"); return userDao.register(user); } public void setUserDao(UserDao userDao) { this.userDao = userDao; } }
6.在编写完分层后,添加ReigsterAction.java并修改前面的LoginAction.java
RegisterAction.java package com.struts2.action; import java.util.Date; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.struts2.model.User; import com.struts2.service.RegisterService; import com.struts2.util.Md5Encode; import org.apache.struts2.ServletActionContext; public class RegisterAction extends ActionSupport implements Action{ private String username; private String password; private RegisterService registerService; public String execute() throws Exception{ System.out.println("begin action"); User user=new User(); user.setUsername(username); user.setPassword(Md5Encode.MD5Encode(password)); user.setCredits(10); user.setLastVisit(new Date()); user.setLastIp(ServletActionContext.getRequest().getRemoteAddr()); if(this.registerService.Register(user)){ return this.SUCCESS; } else{ return this.ERROR; } } 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 void setRegisterService(RegisterService registerService) { this.registerService = registerService; } }LoginAction.java
package com.struts2.action; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.struts2.model.User; import com.struts2.service.LoginService; import com.struts2.util.Md5Encode; public class LoginAction extends ActionSupport implements Action{ private static final long serialVersionUID = 1L ; private String username; private String password; private LoginService loginService; @Override public void validate() { } public String execute() throws Exception { User user=new User(); user.setUsername(username); user.setPassword(Md5Encode.MD5Encode(password)); boolean result=this.loginService.login(user); if(result){ return this.SUCCESS; }else{ return this.ERROR ; } } 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 LoginService getLoginService() { return loginService; } public void setLoginService(LoginService loginService) { this.loginService = loginService; } }
7.配置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> <constant name="struts.i18n.encoding" value="utf-8"></constant> <constant name="struts.objectFactory" value="spring"></constant> <package name="strutsqs" extends="struts-default"> <action name="Login" class="com.struts2.action.LoginAction"> <result name="success">/welcome.jsp</result> <result name="error">/error.jsp</result> </action> <action name="Register" class="com.struts2.action.RegisterAction"> <result name="success">/welcome.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
8.最后给出最重要的spring配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 数据源配置 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/spring"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <!-- 定义Spring JDBC模板类bean --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- dao --> <bean id="userDao" class="com.struts2.dao.UserDao"> <property name="jdbcTemplate" ref="jdbcTemplate" ></property> </bean> <!-- service --> <bean id="registerService" class="com.struts2.service.RegisterService"> <property name="userDao" ref="userDao"></property> </bean> <bean id="loginService" class="com.struts2.service.LoginService"> <property name="userdao" ref="userDao"></property> </bean> <!-- action --> <bean id="login" class="com.struts2.action.LoginAction"> <property name="loginService" ref="loginService"></property> </bean> <bean id="register" class="com.struts2.action.RegisterAction"> <property name="registerService" ref="registerService"></property> </bean> </beans>
从上面明显可以看出层之间的依赖关系,action-->service-->dao--->jdbc模板--->数据源
发表评论
-
Hadoop集群,不重启增加机器
2014-03-12 14:34 916有的时候, datanode或者tasktracker cra ... -
spring jdbcTemplate
2013-07-19 16:51 1041转自http://www.iteye.com/topic/53 ... -
JfreeChart
2012-09-28 22:30 1245JFreeChart的使用 http://www.cnblog ... -
Java中用内存映射处理大文件
2012-08-04 10:07 964在处理大文件时,如果利用普通的FileInputStream ... -
myeclipse6.5破解
2012-04-02 13:49 1256import java.io.BufferedReader; ... -
如何打WEB项目的升级补丁包
2011-12-28 11:53 1493以前没有打过项目包,更没有打过升级的补丁包,今天属于赶鸭子上架 ... -
appscan 安全漏洞修复
2011-12-27 18:05 137141.会话标识未更新:登录页面加入以下代码 requ ... -
tomcat6配置https
2011-12-22 10:11 1466SSL协议使用不对称加密 ... -
tomcat下禁用不安全的http方法
2011-12-22 08:58 27044WebDAV (Web-based Distributed A ... -
JAVA经典算法40题
2011-12-21 16:20 1330JAVA经典算法40题 【程序1】 题目:古 ... -
properties--java web项目自定义配置文件路径
2011-12-21 12:02 12663InputStream in = this.getClas ... -
判断时间段内文件是否更新
2011-12-20 20:28 14521.定时器 private Timer timer; ... -
某公司的面试题--递归拿到所有子类的id
2011-12-20 20:06 1931package com; import java.u ...
相关推荐
基于Struts2+Spring+Hibernate+MySql的注册登录系统 SSH实例 入门实例 Java EE简单实现例子
AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架)
一个简单的struts+spring+hibernate整合实现用户注册的例子,我花了一个下午整出来的,希望对想学习的同志有所帮助。 mysql sql文: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `password` varchar(32) ...
Struts2+Spring3+Hibernate3框架整合AJAX+JQuery实现登录、注册以及验证码和验证注册用户的用户名唯一性 代码简单易懂且肯定正确,有丰富的注释肯定能看明白,本来不想设资源分,但是看到凡是上传代码的都设了资源分...
Struts + Spring + Hibernate完成用户登陆
使用java ssh框架(struts2+hibernate+spring)开发的简易电子商城系统,有用户登录注册功能、商城购物功能,有前端页面,开发环境:编译器为eclipse,数据库为mysql5.7(mysql8.0用不了,需要重新修改配置文件),...
MySQL数据库,完整备份
SSH 框架集成,实现 简单的用户登陆和注册功能(内涵相关jar包 Sping4.1+Struts2.3+Hibernate4.3+MySQL驱动5.1).适合初学SSH框架的学者,供参考和学习。 注:内不包含MySQL数据库的相关表,建议运行环境在JDK 1.7...
本系统是用struts2+hibernate +spring实现的用户登录注册以及列举多有用户和删除用户等功能的实例,希望能对大家有用
一直以来公司都没有用现如今比较前卫的技术,闲来无聊,自己实现了个struts简单注册的例子,目的自己练习用,简单说下我的想法, 其一:想加spring,但是怎么读spring.xml配置文件也得不到它,就放弃了, 其二:利用...
Eclipse3.7+MySql5.5+Spring3.0+struts2+hibenate3整合实现
struts2+spring+ibatis(ssi),标准的MVC结构,使用的myeclipse+MySQL(数据库字段3个)很简单,因此没有必要附上数据库资源了。感兴趣的童鞋可以看看。
基于struts2+spring+springjdbc开发的代码分享网,所有源码已开源。 网站功能介绍: 1、邮件注册(采用阿里云企业邮箱),为了让大家体验一下邮箱注册功能。我已经在分享的源码中,为大家配置好了测试账户,大家可以...
非常简易的学生后台管理练手,实现登录注册用户,展示所有用户和修改密码和删除用户的功能,即基本的增删改查,使用spring动态连接mysql和access数据库,可以通过改变applicationContext.xml中的ref指向不同数据库;...
程序采用MVC模式: JSP + Struts2 + Spring + Hibernate 3 + MySQL 数据库:MySQL 前台游客浏览、普通用户操作和后台管理3部分。结合目前网上购物平台系统的设计方案,本项目具有 以下特点:界面设计美观大方、...
用户信息管理系统(仅登录注册搜索列表)【ssh+jsp+mysql5.x】先注册再登录!技术实现方面,用户信息管理系统采用了SSH框架,结合了JSP技术和MySQL5.x数据库。Struts2参与构建MVC的Web层,负责将用户请求导向正确的...
整合Struts、Spring、Hibernate做的登录注册,并用Ajax进行用户名是否被占用的检验,实现异步交互。初学完J2EE框架的整合Demo。导入MyEclipse,加入SSH所需的jar包修即可
3.4 实现spring、struts2.x和hibernate框架集成 3.5 小结 第2篇 典型模块开发 第4章 在线文本编辑器(fckeditor) 4.1 分析fckeditor在线文本编辑器 4.2 fckeditor在线文本编辑器初级应用 4.3 ...
使用Struts2-Spring-Hibernate整合实现的简单用户登录,程序层次结构分明,简单易懂!!!
注册用户自定义的PropertyEditor 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明...