- 浏览: 172549 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
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 980有的时候, datanode或者tasktracker cra ... -
spring jdbcTemplate
2013-07-19 16:51 1085转自http://www.iteye.com/topic/53 ... -
JfreeChart
2012-09-28 22:30 1309JFreeChart的使用 http://www.cnblog ... -
Java中用内存映射处理大文件
2012-08-04 10:07 1001在处理大文件时,如果利用普通的FileInputStream ... -
myeclipse6.5破解
2012-04-02 13:49 1313import java.io.BufferedReader; ... -
如何打WEB项目的升级补丁包
2011-12-28 11:53 1750以前没有打过项目包,更没有打过升级的补丁包,今天属于赶鸭子上架 ... -
appscan 安全漏洞修复
2011-12-27 18:05 138031.会话标识未更新:登录页面加入以下代码 requ ... -
tomcat6配置https
2011-12-22 10:11 1517SSL协议使用不对称加密 ... -
tomcat下禁用不安全的http方法
2011-12-22 08:58 27142WebDAV (Web-based Distributed A ... -
JAVA经典算法40题
2011-12-21 16:20 1380JAVA经典算法40题 【程序1】 题目:古 ... -
properties--java web项目自定义配置文件路径
2011-12-21 12:02 12713InputStream in = this.getClas ... -
判断时间段内文件是否更新
2011-12-20 20:28 14901.定时器 private Timer timer; ... -
某公司的面试题--递归拿到所有子类的id
2011-12-20 20:06 1976package com; import java.u ...
相关推荐
总的来说,基于Struts2+Spring+Hibernate+MySql的注册登录系统是利用这些技术协同工作,实现了用户注册、登录的基本功能。Struts2处理请求,Spring管理组件和事务,Hibernate负责数据持久化,而MySql存储数据。...
这个实例是关于如何将这些技术融合在一起,实现一个用户注册的功能。 首先,Struts2是一个基于MVC设计模式的Action框架,它负责处理用户的请求并转发到相应的业务逻辑。在注册功能中,Struts2会接收前端的注册表单...
通过Struts2处理请求和响应,Spring管理对象和事务,Hibernate进行数据库操作,实现了用户管理与书籍管理的核心功能。对于开发者而言,理解并掌握SSH的整合开发,能够提升开发效率,构建出稳定高效的Web应用。
该项目是一个综合示例,旨在帮助初学者了解如何将流行的Java开发框架Struts2、Hibernate和Spring4整合在一起,并实现微信登录功能。这三个框架在企业级Java应用开发中广泛使用,它们各自负责不同的职责:Struts2处理...
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) ...
1. **用户模块**:用户注册、登录、个人信息管理等功能,Struts2处理HTTP请求,Spring管理用户服务层(UserService),Hibernate负责用户数据的持久化。 2. **文章模块**:用户可以发布、编辑、删除自己的文章,...
本文旨在通过一个简单的登录示例项目,详细介绍如何在Netbeans IDE环境下构建基于Struts2.0、Spring2.5与Hibernate框架的应用程序。 #### 二、环境搭建与准备 ##### 1. 软件需求 - JDK 1.6:确保安装了正确的Java...
Struts2+Spring3+Hibernate3框架整合AJAX+JQuery实现登录、注册以及验证码和验证注册用户的用户名唯一性 代码简单易懂且肯定正确,有丰富的注释肯定能看明白,本来不想设资源分,但是看到凡是上传代码的都设了资源分...
本项目"struts2+spring+ibatis用户管理"是一个整合示例,旨在展示如何将这三个框架集成到一起,实现一个基本的用户管理系统。 **Struts2** 是一个基于MVC设计模式的Action框架,主要用于处理HTTP请求,提供了一系列...
3. **业务逻辑**:编写Struts2 Action,处理用户提交的注册和登录请求,调用Spring管理的Service层进行具体业务处理。 4. **持久化操作**:在Service层中,使用Hibernate的Session接口进行数据库交互,如save()方法...
综合以上,本项目通过Struts2、Spring、Hibernate和DWR的整合,构建了一个具备用户注册、多级下拉联动和表格刷新功能的Web应用。这种整合不仅提高了开发效率,也提升了用户体验,展示了Java Web开发的强大能力。在...
在这个初级示例中,开发者可能创建了一个简单的用户登录或注册功能,涉及到Struts1的动作映射,Spring的依赖注入,Hibernate的数据操作,以及Freemarker的模板渲染。虽然描述中提到内容简单,但实际操作中,这四个...
5. 系统架构与功能:该系统可能包含了用户注册登录、商品浏览、购物车管理、订单处理、支付接口集成等核心模块。通过Struts2和Spring2.5的配合,实现了业务逻辑与展示层的分离,提高了代码的可读性和可测试性。同时...
library_ssh2可能是一个包含系统源代码的压缩文件,"ssh2"可能表示系统使用了Struts2、Spring2和Hibernate2这三个框架的早期版本。这个文件中应包含所有必要的Java源代码、配置文件、Web应用相关的资源(如JSP页面、...
测试SSH Demo时,可以创建一个简单的用户登录或注册功能,涉及Action、Service、DAO以及相应的数据库交互。"testSSH"可能是一个测试用例或者测试目录,用于验证整个SSH整合是否正常工作,比如可以包含测试用户的账号...
使用java ssh框架(struts2+hibernate+spring)开发的简易电子商城系统,有用户登录注册功能、商城购物功能,有前端页面,开发环境:编译器为eclipse,数据库为mysql5.7(mysql8.0用不了,需要重新修改配置文件),...
此外,Struts 2与Spring的集成使得依赖注入变得简单,提高了代码的可测试性。 **Hibernate** 是一个对象关系映射(ORM)框架,它将Java对象与数据库表进行映射,从而消除了传统的JDBC编程的繁琐。通过Hibernate,...
在这个简单的注册功能实现中,我们将深入探讨这些技术如何协同工作来完成用户注册。 首先,Struts2 是一个基于 MVC(Model-View-Controller)模式的Web应用框架,它负责处理HTTP请求并将其映射到相应的Action,进而...
- 测试整合:创建简单的示例项目,如用户登录注册,验证整合是否成功。 5. **优势**:这种整合提供了模型层、服务层和视图层的分离,降低了组件之间的耦合度,提高了代码的可读性和可维护性。同时,Spring的事务...