SSH2 Step by Step- Step 1 Struts2初步配置学习
分类: 软件开发 设计模式2011-11-25 13:16 109人阅读 评论(0) 收藏 举报
SSH2(Struts2,Spring,Hibernate) Struts进行
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
控制,Spring进行业务流转,Hibernate进行数据库操作的封装!
先把SSH2的每个框架的版本列一下,因为不同的框架版本,需要的Jar文件都有所区别:
开发环境: Eclipse 3.7 (Indigo) + Win7 + Tomcat 7
SSH2版本:
struts-2.2.3.1
Spring3.1.0
Hibernate4.0.0
这里的整合思路如下:
先配置Strut2的环境
将Struts2和Hibernate整合
将Struts2和Spring整合
将Spring和Hibernate整合
这里Struts升级到了Struts2,和Strut1有了很大的区别,因此配置方面也不太一样。闲话少说,马上开始。
1. 下载Struts 开发包: http://www.apache.org (搜索Struts的Project) -- 不要告诉我你找不到
下载最新的 struts-2.2.3.1
解压缩后会发现lib目录下N多jar文件,下面这几个是必不可少的(一共8个,跟我搜索到的6个或者7个
答案
八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案
不一样,少一个运行Tomcat7的服务都会有问题)
2. 在Ecplise中新建一个Dynamic web Project,将上面的8个Jar文件复制到WebConent/WEB-INF/lib目录下
3. 在WEB-INF下新建一个web.xml文件,这个是启动web服务必须要用滴. 内容如下:
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"?
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
注意:上面的Filter是StrutsPrepareAndExecuteFilter,这个是最新的Filter
4. 在src目录下新建一个struts.xml文件,这个是action调用必须要用滴,现在什么都不用写,放个空壳先
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"?
5. 写个Action类测试一下,注意这里用到了一些Struts的Feature,直接运行一下就能看到了(default action会调用execute方法,如果需要指定运行某个Method,直接在Struts.xml中指定 method="xxx"即可):
[java] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"?
package test;
import com.opensymphony.xwork2.ActionSupport;
//action类一般都继承ActionSupport
public class LoginAction extends ActionSupport {
public String username;
public String password;
public String execute()
{
if (!username.equals("admin"))
{
super.addFieldError("username", "用户名错误!");
return ERROR;
}
if (!password.equals("admin"))
{
super.addFieldError("password", "密码错误!");
return ERROR;
}
return SUCCESS;
}
public void validate()
{
if ((null == username) || (0==username.length()))
{
super.addActionError("用户名不能为空!");
}
if ((null == password) || (0 == password.length()))
{
super.addActionError("密码不能为空!");
}
}
}
6. 开始配置struts.xml, 在第5步的基础上增加一个package和Action:
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"?
index.jsp
login.jsp
login.jsp
注意:
result节点会根据LoginAction中execute方法的返回值来判断需要转到哪个jsp文件显示
如果需要指定执行LoginAction某个Method,可以增加method,例如:
7. 写个Login.jsp文件测试一下
login.jsp
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"?
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
Struts Test
上面用到了struts2的一些tag,具体使用方法自己百度...
成功后转到index.jsp (return string ="success")
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/6977031#"?
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
Struts Test Result
用户名:
密 码 :
8. 测试结果:
输入错误用户名会有自动提示:
输入正确用户名和密码:
测试通过!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
我们配置完Struts2以后 (详细配置请参考上面一片文章SSH2 Step by Step- Step 1 Struts2初步配置学习),开始配置Hibernate
这里使用了免费的数据库Mysql来保存数据库信息
1. 开始下载Hibernate的文件,地址:http://www.hibernate.org/downloads.html
下面是一张Hibernate的组件图,我们用到的是Javaee5.0,组件内容很丰富,但是先下载Hibernate Core的组件包先:
解压缩hibernate-release-4.0.0.CR4.zip后,可以看到lib目录下有一个required目录,偷懒的话可以将jar文件全部copy到你的project中,当然,咱不是偷懒的人,所以精选了几个核心jar包,至少运行不会报错。
Hibernate的核心Jar包
antlr-2.7.7.jar
commons-collections-3.2.1.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.0.CR2.jar (如果要用到annotations的feature的估计要用到这个jar包,不管用不用,放着先吧)
hibernate-core-4.0.0.CR4.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
commons-collections-3.2.1.jar
jboss-logging-3.0.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
Mysql需要用到的包:(http://dev.mysql.com/downloads/connector/j/)
mysql-connector-java-5.1.18-bin.jar
2. 配置hibernate xml文件 (hibernate.cfg.xml, 放在src/目录下), 看不懂的自己看备注或者百度...我这里的数据库是test, 用户名和密码都是root.
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"?
com.mysql.jdbc.Driver
jdbc:mysql://localhost/test?characterEncoding=utf-8
org.hibernate.dialect.MySQLDialect
root
root
false
true
3. 修改原先的User 对象,增加几个属性:
[java] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"?
package com.test.model;
import java.util.Date;
public class User {
private int id;
private String name;
private String password;
private Date birthday;
// get set 方法略过....
}
4. 在User类的源代码目录下增加一个Hibernate映射文件,名字为: User.hbm.xml....这个就是告诉Hibernate,怎么把User类映射到数据库中。
User.hbm.xml的内容如下:
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"?
5. 修改hibernate.cfg.xml, 在“show_sql" 的属性下再增加一句:
6. 好了,开始在Mysql中创建User
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
了,SQL如下:
[sql] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"?
CREATE TABLE user (
id INT PRIMARY KEY auto_increment,
password varchar(40),
name VARCHAR(40),
birthday DATE
);
7. 写个类测试一下是否可以连上数据库:
[java] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7008160#"?
package test;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.test.model.User;
public class HibernateTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Configuration cfg = new Configuration().configure();
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
//打开事务
Transaction tx = session.beginTransaction();
//创建POJO对象
User user = new User();
user.setName("brues");
user.setPassword("blog.csdn.net/bruesz");
user.setBirthday(new Date());
session.save(user);
//关闭事务
tx.commit();
session.close();
System.out.println("User Inserted!");
}
}
使用Hibernate的7个步骤:
看看输出的Log,已经成功更新数据库
查询一下数据库,是否有数据:
接下来要把 Struts2 和Hibernate整合起来,休息一下,详见下一篇文章.
话说前两篇介绍了怎么配置Struts和Hibernate,这篇就用一个简单的例子:用户注册,将这两种技术整合起来。
1. 写一个注册界面registration.jsp,这里用到了Java国际化的一些标记,能看懂的就看,看不懂的先别理他....
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"?
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
Insert title here
Registration Test
2. 在struts.xml中增加一个action的mapping
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"?
index.jsp
registration.jsp
registration.jsp
3. 增加一个注册的action类
[java] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"?
package test;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.test.model.User;
import com.test.service.UserService;
public class RegistrationAction extends ActionSupport implements ModelDriven {
private User user = new User();
public User getModel() {
return user;
}
public String execute()
{
System.out.println(user.toString());
UserService us = new UserService();
us.saveUser(user);
return SUCCESS;
}
}
上面的类还引用了一个业务逻辑类,如下:
[java] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"?
package com.test.service;
import com.test.dao.UserDao;
import com.test.model.User;
public class UserService {
private UserDao userdao = new UserDao();
public void saveUser(User user)
{
userdao.saveUser(user);
}
public User getUserInfo(String username)
{
User user = userdao.getUserbyName(username);
return user;
}
public boolean login(String username, String password)
{
User user = userdao.getUserbyLoginInfo(username, password);
if (null != user)
{
return true;
}else{
return false;
}
}
}
跟数据库的打交道的DAO类:
[java] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"?
package com.test.dao;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.test.model.User;
public class UserDao {
private SessionFactory factory;
public UserDao()
{
Configuration cfg = new Configuration().configure();
this.factory = cfg.buildSessionFactory();
}
public void saveUser (User user)
{
Session session = this.openSession();
Transaction tx = null;
try
{
//打开事务
tx = session.beginTransaction();
session.save(user);
//关闭事务
tx.commit();
}catch(Exception ex)
{
tx.rollback();
ex.printStackTrace();
}finally{
session.close();
}
}
public User getUserbyName(String username)
{
Session session = this.openSession();
String hql = "from user where name=:name";
Query query = session.createQuery(hql);
query.setString("name", username);
//用uniqueResult获取唯一对象,或者用list获取对象列表
User user = (User) query.uniqueResult();
return user;
}
public User getUserbyLoginInfo(String username, String password)
{
Session session = this.openSession();
String hql = "from User where name=:name and password=:password";
Query query = session.createQuery(hql);
query.setString("name", username);
query.setString("password", password);
//用uniqueResult获取唯一对象,或者用list获取对象列表
User user = (User) query.uniqueResult();
return user;
}
public Session openSession()
{
Session session = this.factory.openSession();
return session;
}
}
4. 注册成功后的显示jsp文件:
index.jsp
[html] view plain
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"copy
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"print
HYPERLINK "http://blog.csdn.net/bruesz/article/details/7011644#"?
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
SSH2 - Index
本文档为【ssh2环境搭建】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。