SSH整合中正确配置以及实例

mysql数据库表已经字段:

项目文件结构:

调试过程中要注意的事项:

①:applicationContext.xml文件要放在src目录下

②:容易出错的地方如下代码中字体为红色处

常见错误请参看:http://blog.163.com/jxguo_05/blog/static/71940100201023185653156/   &  http://blog.sina.com.cn/s/blog_6757442e0100xumy.html &

http://blog.csdn.net/yabushandaxue/article/details/39473593

各工具版本:struts2.3.4 、hibernate 3.6.0  spring3.1.3

jar包:如下:下载地址:http://download.csdn.net/detail/sxf1997/7976797

这里是一个简单的利用ssh整合的页面登陆界面

代码如下:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xmlns="http://java.sun.com/xml/ns/javaee"
		 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
		  id="WebApp_ID" version="3.0">
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
   <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:applicationContext.xml</param-value>
  </context-param>

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

  <session-config>
  	<session-timeout>30</session-timeout>
  </session-config>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <span style="color:#ff0000;"><package name="Action" namespace="/" extends="struts-default"></span>
         <!-- 登录 -->
        <action name="login" class="Action.LoginServiceAction">
       		<result name="success">/success.jsp</result>
      		<result name="error">/login.jsp</result>
        </action>
    </package>
</struts>

login.jsp

<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h1>欢迎登录</h1>

<span style="color:#ff0000;"><s:form action="login.action"  method="post" namespace="/"></span>
	<s:textfield name="username" label="账号"></s:textfield>
	<s:password name="password" label="密码"></s:password>
	<s:submit value="登陆"></s:submit>
</s:form>
</body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>

<h1>欢迎你,<s:property value="username"/>登陆成功!</h1>
</body>
</html>

登陆页面处理的action

package Action;

import java.util.List;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import DAO.UserDao;
import PO.User;
import com.opensymphony.xwork2.ActionSupport;
public class LoginServiceAction extends ActionSupport {
	/**
	 *
	 */
	private static final long serialVersionUID = 1L;
	/**
	 *
	 */

	private String username;
	private String password;
	<span style="color:#ff0000;">ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");</span>

	UserDao userDao=(UserDao) ctx.getBean("userDao");
	/**
	 * @return the username
	 */
	public String getUsername() {
		return username;
	}
	/**
	 * @param username the username to set
	 */
	public void setUsername(String username) {
		this.username = username;
	}
	/**
	 * @return the password
	 */
	public String getPassword() {
		return password;
	}
	/**
	 * @param password the password to set
	 */
	public void setPassword(String password) {
		this.password = password;
	}
	/* (non-Javadoc)
	 * @see com.opensymphony.xwork2.ActionSupport#execute()
	 */
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		//查找账号相符的用户
		List<User>userlist=userDao.findByName(username);
		//使用简化的for语句对集合进行遍历并比较用户的密码
		for(User user : userlist){
			if(user.getPassword().equals(password)){
				return SUCCESS;
			}else {
				return ERROR;
			}
		}
		return ERROR;
	}

}

处理方法的接口 ( DAO包)

package DAO;

import java.util.List;

import PO.User;

public interface UserDao {
	/**
	 * 加载User实例
	 * @参数id知道需要加载的User实例的主键值
	 * @return 返回加载的User实例
	 * */
	User get(Integer id);

	/**
	 * 保存User实例
	 * @参数user知道需要保存的User实例
	 * @return 返回刚刚保存的User实例的标识属性值
	 * */

	Integer save(User user);

	/**
	 * 根据用户名查找User
	 * @参数那么知道查询的用户名
	 * @return返回用户名对呀的全部User
	 * */
	List<User>findByName(String name);
}

实现接口的类ImplDao.UserImpl

package ImplDao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;

import DAO.UserDao;
import PO.User;

public class UserDaoImpl implements UserDao {

	//实例化一个HibernateTemplate对象,用于执行持久化操作
	private HibernateTemplate ht=null;
	//Hibernate持久化操作所需SessionFactory
	private SessionFactory sessionFactory=null;
	//用户依赖注入的setter方法
	public void setSessionFactory(SessionFactory sessionFactory){
		this.sessionFactory=sessionFactory;
	}
	//初始化HibernateTemplate方法
	private HibernateTemplate gethiHibernateTemplate(){
		if(ht==null){
			ht=new HibernateTemplate(sessionFactory);
		}
		return ht;
	}

	@Override
	public User get(Integer id) {
		// TODO Auto-generated method stub
		//获取对应表中id为某个值的数据,id为主键索引
		return gethiHibernateTemplate().get(User.class, id);
	}

	@Override
	public Integer save(User user) {
		// TODO Auto-generated method stub
		return (Integer)gethiHibernateTemplate().save(user);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<User> findByName(String name) {
		// TODO Auto-generated method stub
		return (List<User>)gethiHibernateTemplate().find("from User u where u.name=?",name);
	}

}

PO(hibernate映射数据表的字段)

package PO;

import java.io.Serializable;

public class User implements Serializable{

	/**
	 *
	 */
	private static final long serialVersionUID = 6810795086071173792L;
	private Integer intId;
	private String name;
	private String password;
	public User(){}
	public User(Integer intId,String name,String password){
		this.intId=intId;
		this.name=name;
		this.password=password;
	}
	/**
	 * @return the intId
	 */
	public Integer getIntId() {
		return intId;
	}
	/**
	 * @param intId the intId to set
	 */
	public void setIntId(Integer intId) {
		this.intId = intId;
	}
	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return the password
	 */
	public String getPassword() {
		return password;
	}
	/**
	 * @param password the password to set
	 */
	public void setPassword(String password) {
		this.password = password;
	}
}

User.hbm.xml(PO对象的映射文件)

<?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="PO.User" table="t_use_info" catalog="test">
		<id name="intId" type="integer">
			<column name="int_id"/>
			<generator class="increment"/>
		</id>
		<property name="name" type="string">
			<column name="name" length="32" not-null="true"/>
		</property>
		<property name="password" type="string">
			<column name="password" length="32" not-null="true"/>
		</property>
	</class>

</hibernate-mapping>

hibernate和spring3的配置(applicationContext.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- default-autowire="byName" -->
	<!-- 定义数据库数据源 -->
    <bean id="abcd" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost/test</value>
        </property>
        <property name="username">
            <value>test</value>
        </property>
        <property name="password">
            <value>test</value>
        </property>
    </bean>
    <!-- 定义会话工厂 ,并注入数据源实例dataSource -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="abcd"/>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
        <property name="mappingResources">
            <list>
                <value>PO/User.hbm.xml</value>
            </list>
        </property>
    </bean>    

	<!-- HibernateTemplate类是简化Hibernate数据访问代码的辅助类,可以获取一个session对象 -->

	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory">
			<ref bean="sessionFactory"/>
		</property>
		<property name="allowCreate">
			<value>true</value>
		</property>
	</bean>

	<!-- 依赖注入 -->

	<bean id="userDao" class="ImplDao.UserDaoImpl">
		<!-- 注入持久化操作所需的sessionfactory -->
		<property name="sessionFactory">
			<ref bean="sessionFactory"/>
		</property>
	</bean>
</beans>

登陆效果:

时间: 2024-11-10 14:18:25

SSH整合中正确配置以及实例的相关文章

读取xml文件中的配置参数实例_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xm

ssh整合中出现的问题

hibernate和Spring整合的时候找.hbm.xml文件的时候会报错,无法解析 com/domain/*.hgm.xml文件,因为是在classpath根路径下找到的<property name="mappingLocations" value="classpath:com/ssh/domain/*.xml"/> Struts2和Spring整合的时候不要过早的导入struts2-spring-plugin-2.1.8的jar包,会报错,要等到在

在Dreamware中正确配置站点

首先电脑里要安装了IIS,然后可以在IIS中添加一个新的网站,如下图,网站名称.物理路径自己设定,端口号可以修改也可以不修改,然后点击确定. 之后为你设定的网站,创建虚拟目录,如下图,虚拟目录的物理路径最好和你的本地文件夹设为一致. 设定好新的网站后就可以为你的DW来设置站点了,点击DW上面一栏中的站点——>管理站点——>新建站点,然后出现如下所示,为你的站点起一个名字,点击下一步,按如下图设置即可.           之后下一步,即可.

ssh整合中web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee htt

SSH整合(1)异常

信息: No Spring WebApplicationInitializer types detected on classpath 十二月 01, 2016 10:06:12 下午 org.apache.catalina.core.ApplicationContext log 信息: Initializing Spring root WebApplicationContext log4j:WARN No appenders could be found for logger (org.spr

Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用

?? 1 改动pom.xml,加入依赖文件: <dependency> <groupId>com.whalin</groupId> <artifactId>Memcached-Java-Client</artifactId> <version>3.0.2</version> </dependency> 2 加入memcached-context.xml,注意要在web.xml中进行配置 <?xml ver

SSH环境搭建,配置整合初步(一)

1,新Web工程,并把编码设为utf-8(所有的都是uft8数据库也是,就不会乱码了) 2,添加框架环境 Junit Struts2 Hibernate Spring 3,整合SSH Struts2与Spring整合 Hibernate与Spring整合 4,资源分类 5,配置日志 Struts2 jar包 struts.xml, web.xml Hibernate jar包:核心包, 必须包, jpa, c3p0, jdbc hibernate.cfg.xml, *.hbm.xml Sprin

SSH整合(配置方式)

工程目录: /SSH1/src/cn/itcast/domain/Book.java package cn.itcast.domain; /** * 图书 */ public class Book { private Integer id; // 图书编号 private String name; // 图书名称 private Double price; // 图书价格 public Integer getId() { return id; } public void setId(Intege

SSH整合配置二级缓存

一.了解 Hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但session关闭时,一级缓存失效. 二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache.oscache等 对缓存若想进步了解可参考以下网址http://www.360doc.com/content/10/0917/17/2560742_54412898.shtml 二.配置 1.在applicationC