- 浏览: 150217 次
- 性别:
- 来自: 保定
文章分类
最新评论
-
hellostory:
高级查询的查询参数放哪里?
SSH超实用分页实现(原创开源)! -
topbox163:
不错。。。。。。。。。
拥有属于自己的SVN(Google SVN)(更新版) -
shiyangxt:
忧_零 写道不知道这个问题LZ是否解决了啊,今天同样碰到这个问 ...
救助贴???关于Mysql插入二进制文件 -
忧_零:
不知道这个问题LZ是否解决了啊,今天同样碰到这个问题了,错误相 ...
救助贴???关于Mysql插入二进制文件 -
sornor:
不错!总算对servlet和jsp之间的关系有了了解了!感谢感 ...
JSP与Servlet的关系和实例分析(转帖)
今天做了这个Struts+DAO框架,可以说是又向SSH迈了一步。
做的过程中又发现了一些问题,但是在我和其他人的努力下一起解决了。这个问题是MyEclipse的Tomcat的启动问题。(已经解决并发帖解答了)
好了,下面切入正题:
Struts+DAO框架实现用户登录。(连接MYSQL数据库)
环境:MyEclipse
步骤:
1.新建WebProject,命名为LoginProject,点击确定
2.给项目加入Struts支持,Add Struts Capabilities....,选Struts1.2,Base package for new classes:命名为cn.mldn.lxh.struts,完成
3.src下新建一个类,名为PersonVO,放在org.lxh.vo,完成,写入代码如下:
// 只包含setter和getter方法的类
package org.lxh.vo ;
import java.util.* ;
public class PersonVo
{
// 表中所有字段
private String id ;
private String name ;
private String password ;
// 此属性用于保存全部错误信息
private List errors ;
public boolean invalidate()
{
boolean flag = true ;
// 验证ID
if(this.id==null||"".equals(this.id))
{
flag = false ;
errors.add("ID不能为空!") ;
}
else
{
// 进行长度验证:3~10位
if(this.id.length()<3||this.id.length()>10)
{
flag = false ;
errors.add("ID的长度应为3~10位!") ;
}
}
// 验证密码
if(this.password==null||"".equals(this.password))
{
flag = false ;
errors.add("密码不能为空!") ;
}
else
{
// 进行长度验证:3~10位
if(this.password.length()<3||this.password.length()>10)
{
flag = false ;
errors.add("密码的长度应为3~10位!") ;
}
}
return flag ;
}
public void setErrors(List errors)
{
this.errors = errors ;
}
public List getErrors()
{
return this.errors ;
}
// 生成getter和setter方法
public void setId(String id)
{
this.id = id ;
}
public void setName(String name)
{
this.name = name ;
}
public void setPassword(String password)
{
this.password = password ;
}
public String getId()
{
return this.id ;
}
public String getName()
{
return this.name ;
}
public String getPassword()
{
return this.password ;
}
};
4.src下新建一个类,名为DAOFactory,包名为org.lxh.factory,完成,写入代码:
// 取得DAO实例的工厂类
package org.lxh.factory ;
import org.lxh.dao.* ;
import org.lxh.daoimpl.* ;
public class DAOFactory
{
public static PersonDAO getPersonDAOInstance()
{
return new PersonDAOImpl() ;
}
};
5.src下新建类,名为DateBaseConnection,包名org.lxh.dbc,完成,写入代码:
// 本类只用于数据库连接及关闭操作
package org.lxh.dbc ;
import java.sql.* ;
public class DataBaseConnection
{
// 属性
// 定义数据库操作的常量、对象
// 数据库驱动程序
private final String DBDRIVER = "com.mysql.jdbc.Driver" ;
// 数据库连接地址
private final String DBURL = "jdbc:mysql://localhost:3306/people" ;
// 数据库用户名
private final String DBUSER = "root" ;
// 数据库连接密码
private final String DBPASSWORD = "hicc" ;
// 声明一个数据库连接对象
private Connection conn = null ;
// 在构造方法之中连接数据库
public DataBaseConnection()
{
try
{
// 加载驱动程序
Class.forName(DBDRIVER) ;
// 连接数据库
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
}
catch (Exception e)
{
System.out.println(e) ;
}
}
// 返回一个数据库连接
public Connection getConnection()
{
/// 返回连接对象
return this.conn ;
}
// 关闭数据库连接
public void close()
{
try
{
this.conn.close() ;
}
catch (Exception e)
{
}
}
};
6.src下新建类,名为PersonDAOImpl,包名为org.lxh.daoimpl,完成。写入代码如下:
// 具体实现DAO接口的类
package org.lxh.daoimpl ;
// 需要连接数据库
// 需要对VO的内容进行具体的验证
import java.sql.* ;
import org.lxh.dao.* ;
import org.lxh.dbc.* ;
import org.lxh.vo.* ;
public class PersonDAOImpl implements PersonDAO
{
public boolean isLogin(PersonVo pv)
{
boolean flag = false ;
// 在此处成具体的数据库验证
// 声明一个数据库操作对象
PreparedStatement pstmt = null ;
// 声明一个结果集对象
ResultSet rs = null ;
// 声明一个SQL变量,用于保存SQL语句
String sql = null ;
// DataBaseConnection为具体的数据库连接及关闭操作类
DataBaseConnection dbc = null ;
// 连接数据库
dbc = new DataBaseConnection() ;
// 编写SQL语句
sql = "SELECT name FROM person WHERE id=? and password= ?" ;
try
{
// 实例化数据库操作对象
pstmt = dbc.getConnection().prepareStatement(sql) ;
// 设置pstmt的内容,是按ID和密码验证
pstmt.setString(1,pv.getId()) ;
pstmt.setString(2,pv.getPassword()) ;
// 查询记录
rs = pstmt.executeQuery() ;
// 判断是否有记录
if(rs.next())
{
// 如果有记录,则执行此段代码
// 用户是合法的,可以登陆
flag = true ;
pv.setName(rs.getString(1)) ;
}
// 依次关闭
rs.close() ;
pstmt.close() ;
}
catch(Exception e)
{
System.out.println(e) ;
}
finally
{
// 最后一定要保证数据库已被关闭
dbc.close() ;
}
return flag ;
}
7.src下新建PersonDAO,包名org.lxh.dao
// 本接口定义本项目中所操作person表的全部方法
package org.lxh.dao ;
// 使用PersonVo类
import org.lxh.vo.* ;
public interface PersonDAO
{
// 需要一个登陆验证的方法
public boolean isLogin(PersonVo pv) ;
}
8.WebRoot下新建文件,命名为数据库创建脚本.sql,完成写入内容,如下:
DROP TABLE person ;
CREATE TABLE person
(
id varchar(20) not null primary key ,
name varchar(20) not null ,
password varchar(20)
) ;
INSERT INTO person (id,name,password) VALUES ('lxh','LiXingHua','ffffff') ;
INSERT INTO person (id,name,password) VALUES ('mldn','mole','mldn') ;
-- 提交事务
commit ;
9.WebRoot下新建两个JSP页面,分别命名为,login和login_success。完成,写入代码:
login.jsp
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.util.*"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<center>
<h1>登陆范例――Struts实现</h1>
<hr>
<br>
<br>
<!-- 加入更加详细的错误提示 -->
<html:errors/>
<html:form action="login.do" method="post">
<table>
<tr>
<td colspan="2">用户登陆</td>
</tr>
<tr>
<td>用户名:</td>
<td><html:text property="id"/></td>
</tr>
<tr>
<td>密 码:</td>
<td><html:password property="password"/></td>
</tr>
<tr>
<td colspan="2">
<html:submit value="登陆"/>
<html:reset value="重置"/>
</td>
</tr>
</table>
</html:form>
</center>
</body>
</html>
login_success.jsp
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>登陆</title>
</head>
<body>
<center>
<h1>登陆范例――Struts实现</h1>
<hr>
<br>
<br>
<h2>登陆成功</h2>
<h3>欢迎<font color="red" size="15">
${person.name}
</font>光临!!!</h3>
</center>
</body>
</html>
10.插入ActionForm和Form的方法。在src下建立,在菜单空白处点右键,选自定义透视图,添加方法,add name和password。
11.修改Struts配置文件,最终代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="loginForm" type="cn.mldn.lxh.struts.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="cn.mldn.lxh.struts.action.LoginAction">
<forward name="suc" path="/login_success.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="cn.mldn.lxh.struts.ApplicationResources" />
</struts-config>
12.在资源文件ApplicationResources.properties中写入代码:实现错误提示。
# Resources for parameter 'cn.mldn.lxh.struts.ApplicationResources'
# Project P/LoginProject
id.null = <li>\u7528\u6237ID\u80fd\u4e3a\u7a7a\uff01\uff01\uff01
password.null = <li>\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01\uff01\uff01
error.login = <li>\u9519\u8bef\u7684\u7528\u6237\u540d\u6216\u5bc6\u7801\uff01\uff01\uff01
13.编辑LoginForm.java,代码如下:
/**
* MyEclipse Struts
* Creation date: 12-14-2006
*
* XDoclet definition:
* @struts.form name="loginForm"
*/
public class LoginForm extends ActionForm {
/*
* Generated fields
*/
/** password property */
private String password;
/** name property */
private String id;
/*
* Generated Methods
*/
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
ActionErrors errors = new ActionErrors() ;
if(this.id==null||"".equals(this.id))
{
errors.add("name",new ActionMessage("id.null")) ;
}
if(this.password==null||"".equals(this.password))
{
errors.add("password",new ActionMessage("password.null")) ;
}
return errors;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
/**
* Returns the password.
* @return String
*/
public String getPassword() {
return password;
}
/**
* Set the password.
* @param password The password to set
*/
public void setPassword(String password) {
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
14.编辑LoginAction.java,代码如下:
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package cn.mldn.lxh.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.lxh.factory.DAOFactory;
import org.lxh.vo.PersonVo;
import cn.mldn.lxh.struts.form.LoginForm;
/**
* MyEclipse Struts
* Creation date: 12-14-2006
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/form/login.jsp" scope="request" validate="true"
*/
public class LoginAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
String id = loginForm.getId() ;
String password = loginForm.getPassword() ;
PersonVo per = new PersonVo();
per.setId(id) ;
per.setPassword(password) ;
System.out.println(DAOFactory.getPersonDAOInstance().isLogin(per));
if(DAOFactory.getPersonDAOInstance().isLogin(per))
{
// 用户ID和密码合法
request.setAttribute("person",per) ;
}
else
{
// 错误,要回到login.jsp页面
ActionMessages errors = new ActionMessages() ;
errors.add("error",new ActionMessage("error.login")) ;
super.saveErrors(request, errors) ;
return mapping.getInputForward() ;
}
return mapping.findForward("suc");
}
}
15.启动MyEclipse中的Tomcat。运行项目。完成
施杨出品!!!
发表评论
-
Java入门编程实例
2008-06-03 16:38 762php的学习先告一段落了,现在拿出近几天看的视频教 ... -
java基础进阶(文件列表,线程,线程组)编程实例(4篇)
2008-06-09 19:59 1052此处刊登代码均测试通过,完全准确! import j ... -
闭关贴!(含Java实践经验)
2008-06-16 11:32 711由于下周就考试 ... -
JSP与Servlet的关系和实例分析(转帖)
2008-06-18 16:39 3238JSP是Servlet的扩展,在没有J ... -
JSP环境配置全解!
2008-06-30 12:26 789实现JSP文件环境配置除了MyEclipse外,最 ... -
JSF搭建完成!(源码)
2008-07-07 12:07 1085今天搭建了我的第一个J ... -
Struts搭建完成!(源码)
2008-07-08 17:07 1335今天又搭好了我的第一个Struts框架,虽然觉有些复杂。但是我 ... -
Java连接数据库(mysql,sqlsever,Oracle,access)的调用函数!
2008-07-09 20:34 1707Java连各种数据库容易混淆,所以总结一下: oracle: ... -
实现Java连接mysql(源码)!
2008-07-10 22:14 3720Java连接mysql数据库,代码经过运行准确无误。 下面为实 ... -
Hibernate搭建成功!(源码)
2008-07-12 12:00 859昨天晚上搭建了我的第一个Hibernate框架。感觉挺爽的! ... -
MyEclipse内的Tmocat启动异常解决方案
2008-07-13 18:51 988在我们平常使用MyEclipse运行项目的时候,往往只需要启动 ... -
一个折磨我一下午的编程问题
2008-07-14 20:36 622今天下午搭Struts+DAO+Hibernate遇到一处错误 ... -
搭SSH时遇到的问题,已解决!
2008-07-16 18:46 711今天下午搭SSH,由于MyEclipse版本的不同,所以在搭的 ... -
JS验证框架的使用方法
2008-07-26 17:01 1069今天着重介绍的是JS验证框架在Java Web项目中的应用, ... -
搭建Servlet在线视频
2008-07-27 22:09 994这个视频flash上传及在 ... -
快速实现国际化---插件ResourceBunbleEditor的使用
2008-07-29 16:33 1013最近发现一个非常好用的插件,这个插件可以使Java的Web项目 ... -
Java数据库连接池类源码
2008-07-30 21:41 1736环境:MyEclipse 数据库:mysql 首先新建 ... -
Common Dbutils组件的使用(源码)
2008-08-01 20:50 1316Common Dbutils是操作数据库的组件,对传统操作数据 ... -
hibernate错误集锦(转)
2008-08-06 21:03 730**************************hiber ... -
Java测试Mysql数据库的最大连接数
2008-08-07 21:55 1449Java测试Mysql数据库的最大连接数类: import ...
相关推荐
本资源是在“ssh框架搭建实例源码3”基础上添加struts2通配符;实现div布局框架;完善对基础dao,service,action操作的封装。 本资源所需的jar包请到“ssh框架搭建实例源码2”和“ssh框架搭建实例源码”中下载: ...
本资源所需的jar包请到“ssh框架搭建实例源码2”和“ssh框架搭建实例源码”中下载: http://download.csdn.net/detail/linchengzhi/4100204 http://download.csdn.net/download/linchengzhi/4076267 相关链接: ...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
这个项目是基于SSH框架(Spring+hibernate+struts2)框架来实现搭建的,具体搭建说明可以参考我的博客 里面做了详细的说明 当然里面也包含其他功能需要用到的jar包,对配置以及实体配置都有注释说明,非常清晰,相信...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
第二部分详细讲解struts 2.2、spring 3.0和hibernate 3.6三个框架的用法,介绍三个框架时,从eclipse ide的使用来上手,一步步带领读者深入三个框架的核心。这部分内容是笔者讲授“疯狂java实训”的培训讲义,因此是...
在网上search了这样的插件,以及相关的源码,对jsmart映象比较深,试用该插件后发现功能虽然强大(能够生成各种框架的环境搭建,以及fck等编辑器的初始化),但是发现有很多的规则受限制: 1.每次自动生成的代码都是一次...
《轻量级java ee企业应用实战(第3版)—struts 2+spring 3+hibernate整合开发》是《轻量级java ee企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级java ee企业...
- [x] Spring+struts2+Hibernate整合 - [x] 前端全部采用easyui搭建 - [ ] Maven管理jar包 - [x] baseDao定义泛型抽象出基本dao操作 ## 导入项目 ### 导入SQL文件 进入到db文件夹,将ssh.sql文件导入到数据库中 ...
《轻量级java ee企业应用实战(第3版)—struts 2+spring 3+hibernate整合开发》是《轻量级java ee企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级java ee企业...