您的位置:首页 > 其它

SSH2整合

2014-04-28 14:37 169 查看
设计好数据库(也不一定要的,那个就先不说了),这里使用mysql数据库,相关信息如下(数据库名:ssh2_demo,表就一张userinfo)



1.先是建立一个web项目,我这里命名为 :SSH2_DEMO_1 (大家喜欢随便怎么命名都ok)

2. 先加入Spring的需要的jar跟spring的配置文件xml,如下图所示(没有可以到官网去下载)

Spring需要的jar: http://pan.baidu.com/share/link?shareid=309734&uk=4245483071



然后在项目的web.xml里面加入spring的信息

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

至此,spring算是ok了

---------------------------------------------------------------------------------------------------------------------------------3.加入hibernate的需要的jar,如下图所示(没有可以到官网去下载,hibernate也是有配置的xml的,不过我这里整合到applicationContext.xml里面去了,所有看不到hibernate的那个配置文件hibernate.cfg.xml) 不要少了mysql的驱动啊

hibernate需要的jar: http://pan.baidu.com/share/link?shareid=121003906&uk=4245483071

mysql 的驱动包 : http://pan.baidu.com/share/link?shareid=309731&uk=4245483071



然后在applicationContext.xml 里面加入数据源的配置信息(我这里是用mysql数据库,就要写上对应数据库的方言什么的)

到这里执行项目如果没有问题的就继续往下走。。。

4.建立实体类 Userinfo.java 跟hibernate的映射文件Userinfo.hbm.xml(命名不要错了 实体类名.hbm.xml)

Userinfo.java

package cn.wzqiang.dto;

public class Userinfo {

privateint id;

privateString username;

privateString password;

publicUserinfo() {

}

publicUserinfo(String username, String password) {

this.username= username;

this.password= password;

}

publicint getId() {

returnthis.id;

}

publicvoid setId(int id) {

this.id= id;

}

publicString getUsername() {

returnthis.username;

}

publicvoid setUsername(String username) {

this.username= username;

}

publicString getPassword() {

returnthis.password;

}

publicvoid setPassword(String password) {

this.password= password;

}

}

Userinfo.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">

<hibernate-mapping>

<class name="cn.wzqiang.dto.Userinfo"table="userinfo" catalog="ssh2_demo">

<id name="id" type="java.lang.Integer">

<column name="id" />

<generator class="native" />

</id>

<property name="username"type="java.lang.String">

<columnname="username" length="64" />

</property>

<property name="password"type="java.lang.String">

<column name="password" length="64" />

</property>

</class>

</hibernate-mapping>

然后在applicationContext.xml加上该信息(红色字体那)

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

<property name="driverClassName" value="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://localhost:3306/ssh2_demo" />

<property name="username" value="root" />

<property name="password" value="123" />

</bean>

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<property name="hibernateProperties">

<props>

<prop key="hibernate.hbm2ddl.auto">update</prop>

<prop key="dialect">org.hibernate.dialect.MySQLDialect</prop>

<prop key="hibernate.show_sql">true</prop>

<prop key="current_session_context_class">thread</prop>

<prop key="cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>

</props>

</property>

</bean>

<property name="mappingResources">

<list>

<value>cn/wzqiang/dto/Userinfo.hbm.xml</value>

</list>

</property>

</bean>



5.有了这些自然就要有增删改查这些方法了,编写一个接口UserInfo_dao 和写一个Userinfo_impl类实现这个接口

package cn.wzqiang.dao;

import java.util.List;

import cn.wzqiang.dto.Userinfo;

public interface UserInfo_dao {

/**

* 用户登录

* @param uname , upwd

* @return

*/

boolean LoginInfo(String uname ,String upwd);

/**

* 添加信息

* @param info

* @return

*/

boolean AddInfo(Userinfo info);

/**

* 删除

* @param info

* @return

*/

boolean DeleteInfo(Userinfo info);

/**

* 修改

* @param info

* @return

*/

boolean UpdateInfo(Userinfo info);

/**

* 根据ID得到对应的信息

* @param id

* @return

*/

Userinfo QueryInfo(int id);

/**

* 查询全部

* @return

*/

List<Userinfo> QueryALLInfo();

}

------------------------------------------------------------------------------------------------------------------------------------------------

Userinfo_impl.java

package cn.wzqiang.dao.impl;

import java.util.ArrayList;

import java.util.List;

import org.hibernate.HibernateException;

import org.hibernate.SessionFactory;

import cn.wzqiang.dao.UserInfo_dao;

import cn.wzqiang.dto.Userinfo;

public class Userinfo_impl implements UserInfo_dao {

//注入SessionFactory

private SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sessionFactory) {

this.sessionFactory = sessionFactory;

}

public boolean AddInfo(Userinfo info) {

// TODO Auto-generated method stub

try {

sessionFactory.getCurrentSession().persist(info);

return true;

} catch (HibernateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

}

}

public boolean DeleteInfo(Userinfo info) {

// TODO Auto-generated method stub

try {

sessionFactory.getCurrentSession().delete(info);

return true;

} catch (HibernateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

}

}

public boolean UpdateInfo(Userinfo info) {

// TODO Auto-generated method stub

try {

sessionFactory.getCurrentSession().merge(info);

return true;

} catch (HibernateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

}

}

public Userinfo QueryInfo(int id) {

// TODO Auto-generated method stub

Userinfo info = new Userinfo();

info = (Userinfo)sessionFactory.getCurrentSession().createQuery("from Userinfo where id = "+id) .uniqueResult();;

return info;

}

public List<Userinfo> QueryALLInfo() {

// TODO Auto-generated method stub

List<Userinfo> list = new ArrayList<Userinfo>();

list = sessionFactory.getCurrentSession().createQuery("from Userinfo").list();

return list;

}

@SuppressWarnings("rawtypes")

public boolean LoginInfo(String uname ,String upwd) {

// TODO Auto-generated method stub

try {

List list = sessionFactory.getCurrentSession().createQuery("from Userinfo where username = '"+uname+"' and password = '"+upwd+"'").list();

if(list.size()!=0){

return true;

}else{

return false;

}

} catch (HibernateException e) {

e.printStackTrace();

return false;

}

}

}

6.学过hibernate的都知道 操作数据库一般要进行事务处理(查询不用),这里这个事务处理可以由spring来进行管理(添加红色字体到applicationContext.xml)

<!--使用切面 -->

<aop:aspectj-autoproxy />

<aop:config>

<!-- execution(* cn.wzqiang.dao.impl..*(..)) 是指cn.wzqiang.dao.imp下的所有类的所有方法 -->

<aop:advisor pointcut="execution(* cn.wzqiang.dao.impl..*(..))"advice-ref="txAdvice" />

</aop:config>

<!--hibernate的事务处理管理 -->

<tx:annotation-driven transaction-manager="transactionManager" />

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<tx:method name="Add*" propagation="REQUIRED" isolation="DEFAULT" />

<tx:method name="Delete*" propagation="REQUIRED" isolation="DEFAULT" />

<tx:method name="Update*" propagation="REQUIRED" isolation="DEFAULT" />

<tx:method name="Query*" propagation="NOT_SUPPORTED" isolation="DEFAULT" />

<tx:method name="LoginInfo*" propagation="NOT_SUPPORTED" isolation="DEFAULT" />

<tx:method name="QueryAll*" propagation="NOT_SUPPORTED"isolation="DEFAULT" />

</tx:attributes>

</tx:advice>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>

---------------------------------------------------------------------------------------------------------------------------------运行ok,没问题

7.加入struts2的需要的jar跟配置信息struts.mxl,如下图所示(没有可以到官网去下载struts2)

Struts2需要的jar: http://pan.baidu.com/share/link?shareid=309737&uk=4245483071



修改web.xml信息,添加struts2的信息进去

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>



-------------------------------------------------------------------------------------------------------------------------------------------------

运行ok,可以跑^_^一个基本的ssh2算是ok了

------

写两个action 一个登录,一个useinfo的增删改查



LoginAction.java

package cn.wzqiang.action;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import cn.wzqiang.dao.UserInfo_dao;

import cn.wzqiang.dto.Userinfo;

public class LoginAction {

/**

* 注入Userinfo_impl

*/

private UserInfo_dao userinfo_impl;

public void setUserinfo_impl(UserInfo_dao userinfo_impl) {

this.userinfo_impl = userinfo_impl;

}

public String userLogin(){

String uname = ServletActionContext.getRequest().getParameter("uname");//接收传过来的用户名

String upwd = ServletActionContext.getRequest().getParameter("upwd");//接收传过来的用户密码

boolean b = false;

try {

b = userinfo_impl.LoginInfo(uname, upwd);

System.out.println("你们祈祷不要是乱码啊:^_^"+uname+";"+upwd+";>>>>"+b);

if(b==true){

List<Userinfo> list = userinfo_impl.QueryALLInfo();

ServletActionContext.getRequest().getSession().setAttribute("listinfos", list);

return "loginok";

}else{

return "loginerror";

}

} catch (Exception e) {

e.printStackTrace();

return "loginerror";

}

}

}

---------------------------------------------------------------------------------------------------------

UserinfoAction.java

package cn.wzqiang.action;

import org.apache.struts2.ServletActionContext;

import cn.wzqiang.dao.UserInfo_dao;

import cn.wzqiang.dto.Userinfo;

public class UserinfoAction {

/**

* 注入Userinfo_impl

*/

private UserInfo_dao userinfo_impl;

public void setUserinfo_impl(UserInfo_dao userinfo_impl) {

this.userinfo_impl = userinfo_impl;

}

private String msg;

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

/**

* 添加用户

* @return

*/

public String AddUserinfo(){

return null;

}

/**

* 删除用户

* @return

*/

public String DeleteUserinfo(){

int id =Integer.parseInt(ServletActionContext.getRequest().getParameter("id"));

try {

Userinfo info = userinfo_impl.QueryInfo(id);

boolean b = userinfo_impl.DeleteInfo(info);

if(b){

msg = "删除成功!";

}else{

msg = "操作删除失败!";

}

} catch (Exception e) {

e.printStackTrace();

}

return "json";

}

/**

* 修改用户

* @return

*/

public String UpdateUserinfo(){

return "json";

}

/**

* 查询所有用户

* @return

*/

public String QueryAllUserinfo(){

return null;

}

/**

* 根据ID查询用户信息

* @return

*/

public String QueryById(){

return null;

}

}

------------------------------------------------------------------------------------------------

设置好struts.xml相关信息

<?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>

<!-- 用户登录 -->

<package name="struts" namespace="/login" extends="struts-default">

<action name="ulogin" class="loginAction">

<result name="loginok">/Userinfo/ok.jsp</result>

<result name="loginerror">/error.jsp</result>

</action>

</package>

<!-- 用户管理操作 -->

<package name="struts_1" namespace="/loginIsok" extends="struts-default,json-default">

<action name="loginok_*" class="userinfoAction" method="{1}">

<result name="json" type="json"/>

</action>

</package>

</struts>

<!--<action name="ulogin" class="loginAction"> , <action name="loginok" class="userinfoAction">的logingAction跟userinfoAction是由spring管理了-->

----------------------

然后在 applicationContext.xml加入以下信息(这些方法交给spring来管理)

</bean>

<bean id="Userinfo_impl" class="cn.wzqiang.dao.impl.Userinfo_impl">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>

<bean id="loginAction" class="cn.wzqiang.action.LoginAction">

<property name="userinfo_impl" ref="Userinfo_impl"></property>

</bean>

<bean id="userinfoAction" class="cn.wzqiang.action.UserinfoAction">

<property name="userinfo_impl" ref="Userinfo_impl"></property>

</bean>

---------------------------------------页面处理--------------------------------------------------------------------------

Index.jsp

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

String path =request.getContextPath();

String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<basehref="<%=basePath%>"/>

<title>这是个首页</title>

<metahttp-equiv="pragma"content="no-cache"/>

<metahttp-equiv="cache-control"content="no-cache"/>

<metahttp-equiv="expires"content="0"/>

<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"/>

<metahttp-equiv="description"content="This is my page"/>

</head>

<body>

<divstyle="margin: 0 auto; width:200px;">

<formaction="<%=basePath%>login/ulogin!userLogin"method="post">

UserName:<inputname="uname"type="text"value=""style="width:140px; height:22px;"/><br/>

PassWord:<inputname="upwd"type="password"value=""style="width:140px; height:22px;"/><br/><br/>

<inputtype="submit"value="登   陆"/>

</form>

</div>

</body>

</html>



由于我使用到了jstl表达式,加入对于的jar

Jstl 的jar: http://pan.baidu.com/share/link?shareid=309742&uk=4245483071

登陆成功的页面 Ok.jsp

<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%@ taglib prefix="s"uri="/struts-tags" %>

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

<base href="<%=basePath%>"></base>

<title>登录成功界面!</title>

<metahttp-equiv="pragma" content="no-cache"/>

<metahttp-equiv="cache-control" content="no-cache"/>

<metahttp-equiv="expires" content="0"/>

<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"/>

<metahttp-equiv="description" content="This is my page"/>

<script type="text/javascript"src="<%=basePath%>js/jquery-1.7.2.js"></script>

<scripttype="text/javascript">

$(function(){

//删除

$(".delete").click(function(){

var uid =$(this).attr("id");

$.ajax({

type:'POST',

url:'<%=basePath%>loginIsok/loginok_DeleteUserinfo',

data:{id:uid},

success:function(data){

alert(data.msg);

if(data.msg.length> 4){

$(".contents"+uid).remove();

}

},

error:function(){

alert("Error");

}

});

});

//修改

$(".update").click(function(){

alert("由于例子简单,所以就不写这个功能了@_@");

});

//鼠标移动变色

$(".contents").each(function(){

$(this).hover(function(){

$(this).css({"background-color":"#333333","cursor":"pointer"});

},function(){

$(this).css("background-color","#666633");

});

});

});

</script>

</head>

<body>

<center>欢迎进入后台操作界面:${user}</center>

<hr/>

<table width="514" border="0"align="center" cellpadding="1"cellspacing="1">

<tr>

<td width="102" height="39"align="center" bgcolor="#333300">序号</td>

<td width="187" align="center"bgcolor="#333300">用户名</td>

<td width="215" align="center"bgcolor="#333300">操作</td>

</tr>

<c:forEach items="${listinfos }" var="infos"varStatus="status">

<tr class="contents${infos.id}"style="background-color: #666633">

<td align="center">${status.index+1}</td>

<td align="center">${infos.username}</td>

<td align="center"><button id="${infos.id}"class="update">修改</button>  <buttonid="${infos.id}" class="delete">删除</button></td>

</tr>

</c:forEach>

</table>

</body>

</html>



------------------------------------------------------------------------------------------------------------------------------------------------------------

如果有什么不对的,请大家指正,一起学习,

源码 http://pan.baidu.com/share/link?shareid=119384352&uk=4245483071

如果是eclipse开发的话 还需要加入这个 servlet-api.jar

地址:http://pan.baidu.com/share/link?shareid=1400130585&uk=4245483071

---------------------------------------------------------------------------------------------------------------------

这个是spring+hibernate+servlet的例子源代码

开发步骤我就不写了,跟ssh2整合差不多,去掉struts2的相关信息就可以了 有问题的话可以看源代码或者留言。。。

http://pan.baidu.com/share/link?shareid=1295577698&uk=4245483071
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: