- 浏览: 155272 次
- 性别:
- 来自: 保定
文章分类
最新评论
-
hellostory:
高级查询的查询参数放哪里?
SSH超实用分页实现(原创开源)! -
topbox163:
不错。。。。。。。。。
拥有属于自己的SVN(Google SVN)(更新版) -
shiyangxt:
忧_零 写道不知道这个问题LZ是否解决了啊,今天同样碰到这个问 ...
救助贴???关于Mysql插入二进制文件 -
忧_零:
不知道这个问题LZ是否解决了啊,今天同样碰到这个问题了,错误相 ...
救助贴???关于Mysql插入二进制文件 -
sornor:
不错!总算对servlet和jsp之间的关系有了了解了!感谢感 ...
JSP与Servlet的关系和实例分析(转帖)
搭建环境:MyEclipse+Mysql
实现用户登录,以下为步骤:
1.在mysql中建立一个名为person的表。
表中数据:id varchar(32) no null primary key;
name varchar(20) no null;
password varchar(20) no null;
2.打开MyEclipse,从菜单中选择窗口,选择首选项,选择数据库浏览器。
3.配置数据库驱动(mysql-connector-java-5.1.6-bin.jar)。
4.选菜单的窗口,选择显示视图,选择其它,选MyEclipse中的DB Browser。点确定。从新窗口中选择New,连接数据库MySQL。
5.新建一个webproject,命名为SHLogin,加入Add Hibernate Capabilities...,选择Hibernate3.1,Next---Next----选择Mysql----Next----不创建工厂----Finish
6.src下新建接口cn.mldn.lxh.login6.dao,命名PersonDAO,写入代码如下:
package cn.mldn.lxh.login6.dao;
import cn.mldn.lxh.login6.vo.Person;
public interface PersonDAO {
public boolean isLogin(Person person) throws Exception ;
}
7.在src下新建一个类,包名cn.mldn.lxh.login6.vo,类名为Person,写入代码:
package cn.mldn.lxh.login6.vo;
public class Person {
private String id;
private String name;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
8.在src下新建包名cn.mldn.lxh.login6.impl,类名LoginDAOImpl,覆写全部抽象方法。写入代码:
package cn.mldn.lxh.login6.impl;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import cn.mldn.lxh.login6.dao.PersonDAO;
import cn.mldn.lxh.login6.factory.DefaultSessionFactory;
import cn.mldn.lxh.login6.vo.Person;
public class PersonDAOImpl implements PersonDAO {
private Session session;
public PersonDAOImpl()
{
this.session=DefaultSessionFactory.getSession();
}
public boolean isLogin(Person person) throws Exception {
boolean flag=false;
String hql="FROM Person AS p WHERE p.id=? AND p.password=?";
Query q= this.session.createQuery(hql);
//设置查询参数
q.setString(0, person.getId());
q.setString(1,person.getPassword());
Iterator iter=q.list().iterator();
if(iter.hasNext())
{
//修改成功标记
flag=true;
//从查找出的对象取出名字
person.setName(((Person) iter.next()).getName());
}
//关闭session连接
this.session.close();
return flag;
}
}
9.在src下新建工厂类cn.mldn.lxh.login6.factory,类名DAOFactory
package cn.mldn.lxh.login6.factory;
import cn.mldn.lxh.login6.dao.PersonDAO;
import cn.mldn.lxh.login6.impl.PersonDAOImpl;
public class DAOFactory {
public static PersonDAO getPersonDAOInstance()
{
return new PersonDAOImpl();
}
}
10.建立映射文件:点表person右键,选择Create Hibernate Mapping,创建在包cn.mldn.lxh.login6.vo下,下面第一个方块打钩,Next----主键生成方式:assigned,完成。
11.修改映射文件Person.hbm.xml,写入代码,如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="cn.mldn.lxh.login6.vo.Person" table="person" catalog="people">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="20" not-null="true" />
</property>
</class>
</hibernate-mapping>
12.工厂包内新建一个类,命名DefaultSessionFactory,写入代码:
package cn.mldn.lxh.login6.factory;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
public class DefaultSessionFactory {
public static Session getSession()
{
Session session=null;
session =new Configuration().configure().buildSessionFactory().openSession();
return session;
}
}
13.映射文件中选择show_sql---true
14.包cn.mldn.lxh.login6.vo下新建测试类(测试是否能连接数据库),类名TestDAO,主方法输出,写入代码:
package cn.mldn.lxh.login6.vo;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import cn.mldn.lxh.login6.factory.DAOFactory;
import cn.mldn.lxh.login6.factory.DefaultSessionFactory;
public class TestDAO {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Session session = DefaultSessionFactory.getSession();
Person p=new Person();
p.setId("123456");
p.setPassword("123456");
String hql="FROM Person AS p WHERE p.id=? AND p.password=?";
Query q= session.createQuery(hql);
//设置查询参数
q.setString(0, p.getId());
q.setString(1,p.getPassword());
List list = q.list();
System.out.println(list.size());
Iterator iter=q.list().iterator();
System.out.println(DAOFactory.getPersonDAOInstance().isLogin(p));
}
}
15.项目添加Struts支持,包名cn.mldn.lxh.login6.struts。完成
16.添加一个JSP页面,名为login.jsp。Template to use:Standard JSP using Struts 1.2。代码修改如下:
<%@ page language="java" pageEncoding="GbK"%>
<%@ 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:html lang="true">
<head>
<title>登陆程序 —— Struts + DAO + Hibernate</title>
</head>
<body>
<center>
<h1>登陆程序 —— Struts + DAO + Hibernate</h1>
<hr>
<br>
<html:errors/>
<logic:present name="flag" scope="request">
<logic:equal name="flag" value="true">
<h2>登陆成功!!!</h2>
<h2>欢迎<font color="red">${person.name}</font>光临!!!</h2>
</logic:equal>
<logic:equal name="flag" value="false">
<h2>登陆失败!!!</h2>
<h2>错误的用户ID或密码!!!</h2>
</logic:equal>
</logic:present>
<br>
<html:form action="login.do" method="post">
用户ID:<html:text property="id"/><br>
密 码:<html:password property="password"/><br>
<input type="hidden" name="status" value="login">
<html:submit value="登陆"/>
<html:reset value="重置"/>
</html:form>
</center>
</body>
</html:html>
17.选择自定义透视图(Custonize Perspective)
选择struts 1.2,建立Struts 1.2 Form,Action&JSP
18.在src下建立Struts 1.2 Form,Action_JSP,Use case:login,Superclass:org.apache.struts.action.ActionForm,
添加Form Properties,name和password----->next----->Finish
19.修改struts-config.xml,代码如下:
<?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.login6.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.login6.struts.action.LoginAction"
parameter="status">
<forward name="suc" path="/login.jsp"></forward>
<forward name="fal" path="/login.jsp"></forward>
</action>
</action-mappings>
<message-resources
parameter="cn.mldn.lxh.login6.struts.ApplicationResources" />
</struts-config>
20.修改ApplicationResources.properties的代码,实现错误输出。
# Resources for parameter 'cn.mldn.lxh.login6.struts.ApplicationResources'
# Project SHLogin
id.null = <li>\u7528\u6237ID\u4e0d\u80fd\u4e3a\u7a7a\uff01\uff01\uff01
password.null = <li>\u7528\u6237\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01\uff01\uff01
21.修改LoginForm.java,代码如下:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package cn.mldn.lxh.login6.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
/**
* MyEclipse Struts Creation date: 03-12-2007
*
* XDoclet definition:
*
* @struts.form name="loginForm"
*/
public class LoginForm extends ActionForm {
/*
* Generated fields
*/
/** password property */
private String password;
/** name property */
private String name;
/** id property */
private String id;
private String status;
// 如果status的值为login,则表示要验证ID和password
/*
* Generated Methods
*/
/**
* Method validate
*
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if ("login".equals(this.status)) {
if (this.id == null || "".equals(this.id)) {
errors.add("id", 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;
}
/**
* Returns the name.
*
* @return String
*/
public String getName() {
return name;
}
/**
* Set the name.
*
* @param name
* The name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* Returns the id.
*
* @return String
*/
public String getId() {
return id;
}
/**
* Set the id.
*
* @param id
* The id to set
*/
public void setId(String id) {
this.id = id;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
22.修改LoginAction,代码如下:
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package cn.mldn.lxh.login6.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import cn.mldn.lxh.login6.factory.DAOFactory;
import cn.mldn.lxh.login6.struts.form.LoginForm;
import cn.mldn.lxh.login6.vo.Person;
/**
* MyEclipse Struts Creation date: 03-12-2007
*
* XDoclet definition:
*
* @struts.action path="/login" name="loginForm" input="/form/login.jsp"
* scope="request" validate="true"
*/
public class LoginAction extends DispatchAction {
/*
* Generated Methods
*/
/**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
// 从ActionForm中取出要的内容
Person person = new Person();
person.setId(loginForm.getId());
person.setPassword(loginForm.getPassword());
boolean flag = false;
try {
flag = DAOFactory.getPersonDAOInstance().isLogin(person);
} catch (Exception e) {
e.printStackTrace();
}
request.setAttribute("flag", new Boolean(flag));
if (flag) {
// 如果成功,则将person对象传递过去
request.setAttribute("person", person);
return mapping.findForward("suc");
} else {
return mapping.findForward("fal");
}
}
}
23.运行MyEclipse内的Tomcat。运行框架。完成!!!
施杨出品!!!
发表评论
-
SSH终于搭建完成了!
2008-07-17 22:08 1241真的是费了好大的劲才 ... -
Common FileUpload组件的使用!(源码)
2008-08-11 20:06 1335今天搞了一下文件上传功能组件Common FileUpload ... -
Ajax入门(转载)
2008-09-14 15:45 794作为J2EE ... -
Struts2+Spring+Hibernate搭建全解!
2008-09-27 22:49 1320Struts2+Spring+Hibernate是J2EE的最 ... -
J2EE实现XML文件的读取与导出(源码)!
2008-10-06 12:19 1154最近学习了XML的相关知识,深感其强大。 XML这个技术家族非 ... -
struts2的8点经验总结(转载)
2008-10-09 12:20 898转自:javaeye 1、在web.xml ... -
Struts2 实现分页(源码)!
2008-10-22 14:28 3083好久没好好写点东西了,最近一直在熟练Str ... -
Struts2拦截器权限验证(源码)!
2008-10-24 13:41 3367长话短说,抛砖引玉,举个很简单的例子,通过 ... -
J2EE玩转FCKEditor(转载)
2008-10-31 20:58 1450很经典的一篇文章,讲的很好,最近我要用这个 ... -
Struts2与FCKeditor整合解决方案
2008-11-04 22:30 1196今天遇到Struts2与FCKeditor整合的问题,我很是无 ... -
SSH超实用分页实现(原创开源)!
2008-12-06 15:34 2848SSH的分页网上有不少的例子,有利用session的,有利 ...
相关推荐
在压缩包文件`news-SSH2`中,可能包含了一些示例项目的源码,包括Struts2的配置文件、Action类、Spring的配置文件、Service和DAO实现,以及Hibernate的实体类和映射文件。通过学习和分析这些代码,开发者可以更深入...
这个"struts2+spring4+hibernate4工程搭建源码"提供了使用这三个框架集成开发的示例代码,对于学习和理解它们的集成应用具有重要的参考价值。 Struts2是Apache基金会的一个开源项目,作为MVC框架,它主要用于处理...
一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...
Struts2、Spring4和Hibernate4是Java Web开发中的三大主流框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个最新的项目系统整合了这三个框架,旨在提供一个高效、灵活且易于维护的开发环境。下面将详细...
总的来说,这份"Struts+Hibernate+Spring源码"集合是一份宝贵的资源,它提供了深入学习和研究这些框架的机会,对提升Java开发者的技术水平大有裨益。通过深入源码,不仅可以掌握框架的基本用法,还能理解其设计理念...
在"Spring + Struts +Hibernate简单学习源码"中,我们可以看到一个综合性的Java Web项目,它利用这三个框架构建了一个功能完整的应用。以下是对这个项目中涉及的知识点的详细解释: 1. **Spring框架**: - **依赖...
这里我们关注的是一个经典的Java EE框架组合——Struts1.2、Spring2.5和Hibernate3.2的集成搭建。这个组合在过去的开发实践中被广泛采用,它们各自负责不同的职责,共同构建出强大的后端架构。 Struts1.2是MVC...
在文件"bookstore"中,可能包含了系统的主要源代码和配置文件,如Action类、DAO(Data Access Object)类、实体类、JSP页面、Struts和Hibernate的配置文件等。这些文件共同构成了网上图书系统的功能模块,实现了图书...
整合过程包括配置各个框架的XML配置文件,如Struts的struts.xml、Spring的applicationContext.xml和Hibernate的hibernate.cfg.xml,以及创建对应的Action、Service、DAO层。 整合SSH的优点在于: 1. **模块化**:...
Struts、Spring 和 Hibernate 是Java Web开发中的三大框架,它们结合使用可以构建高效、模块化的应用程序,特别是对于处理用户登录和文件上传等常见功能。在这个项目中,"struts+spring+hibernate(mysql)用户登录及...
Spring、Struts和Hibernate是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出功能强大且架构清晰的企业级应用。在这个“Spring+Struts+Hibernate经典注册”项目中,我们将深入探讨这三个框架如何...
这个项目源码提供了这样一个集成实例,名为"整合spring4+struts2+hibernate4项目源码",它展示了如何将这三个框架无缝结合在一起,以实现高效的业务逻辑处理和数据持久化。前端部分则采用了Bootstrap框架,提供了...
在Struts和Hibernate的整合中,Spring主要作为容器管理它们,包括Action对象和数据访问对象(DAO)。Spring的IoC容器可以轻松地管理和配置其他框架的组件,使得整个应用的耦合度降低。 **Hibernate框架**是一个强大...
Struts、Spring和Hibernate是Java Web开发中的三大框架,它们的组合被称为SSH(Struts、Spring、Hibernate)架构。这个组合被广泛应用于构建企业级应用,因为它提供了模型-视图-控制器(MVC)设计模式的支持,事务...
"Struts2 + Spring + Hibernate + DWR"是一个常见的Java Web开发框架组合,用于构建动态、数据驱动的Web应用程序。这个项目部署笔记将深入探讨这四个组件的核心功能以及它们如何协同工作。 首先,Struts2是一个基于...
这是一个基于Java技术栈的车辆管理系统源码,使用了经典的SSH框架(Struts、Hibernate和Spring)结合Oracle数据库进行开发。SSH框架是Java Web开发中常用的技术组合,它们各自承担着不同的职责,共同构建了一个功能...
1. 搭建集成环境:介绍如何配置Struts 2、Spring和Hibernate的项目结构,以及相关的XML配置文件,如struts.xml、spring-context.xml和hibernate.cfg.xml。 2. 实现数据持久化:讲解如何使用Hibernate的注解或XML配置...
同时,通过阅读源码,可以提升对Spring、Struts2和Hibernate的掌握程度,为实际项目开发打下坚实基础。 以上就是关于“Struts2+Spring2.5+Hibernate3.2整合示例”的主要知识点,这个整合实例涵盖了Java Web开发中的...
Spring、Struts和Hibernate是Java开发中的三个重要框架,它们分别解决了不同的问题,共同构建了一个强大的后端开发架构。本项目"JAVA spring+struts+hibernate开发的留言板"便是这种经典组合的应用实例。 Spring...
一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...