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
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
相关文章推荐
- ssh2的整合
- JBPM4.4与SSH2之整合
- SSH2框架整合
- SSH2整合--配置+详解
- maven整合ssh2框架的依赖配置
- SSH2整合案例
- SSH2+Maven整合开发
- ssh2整合OA问题集
- SSH2整合遇到的错误
- SSH2框架整合的常见问题总结!
- ssh2项目整合 struts2.1+hibernate3.3+spring3 基于hibernate注解和struts2注解
- SSH2 整合登录
- SSH2整合小结
- SSH2整合之注解篇
- 项目视频讲解_房屋租赁系统框架搭建 (SSH2与Maven整合)
- SSH2框架整合总结!
- ssh2整合(一)
- ssh2整合中的一些问题
- SSH2整合--配置+详解
- SSH2 整合