java web ssh三大框架整合简单入门

贫道放假第二天了,是时候写一个简单的入门了,ssh三大框架啊的简单整合。

做一个简单的用户登录。创建好一个web工程后,添加为Spring工程添加hibernate工程是会将hibernate.cfg.xml集成到applicationContext中既然是用户登录首先需要一个实体类。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<span style="white-space:pre">		</span><!--连接数据库-->
		<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://localhost:3306/demo"></property>
		<property name="username" value="root"></property>
		<property name="password" value="123456"></property>
	</bean>
<span style="white-space:pre">	</span><!-- 配置会话工厂   <span style="font-family: Arial, Helvetica, sans-serif;">LocalSessionFactoryBean  不能使用注解</span><span style="font-family: Arial, Helvetica, sans-serif;"> --></span>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<span style="white-space:pre">	</span><!--将<span style="font-family: Arial, Helvetica, sans-serif;">dataSource注入到sessionFactory中</span>-->
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.show_sql">
					true
				</prop>
				<prop key="hibernate.format_sql">
					true
				</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
<span style="white-space:pre">				</span><!--hibernate中的maping映射位置-->
				<value>com/entity/User.hbm.xml</value>
			</list>
		</property>
	</bean>

  建立实体类User.java

package com.entity;

/**
 * User entity. @author MyEclipse Persistence Tools
 */

public class User implements java.io.Serializable {

	// Fields

	/**
	 * 
	 */
	private static final long serialVersionUID = 4585221013478533506L;
	private Integer id;
	private String username;
	private String password;

	// Constructors

	/** default constructor */
	public User() {
	}

	/** full constructor */
	public User(String username, String password) {
		this.username = username;
		this.password = password;
	}

	// Property accessors

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUsername() {
		return this.username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}
    与数据库建立关系映射User.hbm.xml

<hibernate-mapping>
    <class name="com.entity.User" table="user" catalog="demo">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" />
        </id>
        <property name="username" type="java.lang.String">
            <column name="username" length="20" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="password" length="20" />
        </property>
    </class>
</hibernate-mapping>
此时,要进行数据CRUD方法建立dao层操作,BaseDao曾为通用操作,为了降低代码的冗余,抽取出来,可以改为两个参数一个传递类类型一个传递对象,BaseDao需要继承HibernateDaoSupport,这个类中提供了链接数据库中所需要的sessionFactory,同时Spring将hibernate中大量的公有操作制作成为了代码模板就是获取session等语句。使用者只用将要使用的方法补全其余的将有Spring来进行管理,所以applicationContext中的数据库方言要配置正确,一个sessionFactory对应于一个数据库实例。

public class BaseDao extends HibernateDaoSupport{

<span style="white-space:pre">	</span>//public void addObject(Class<?> clazz,Object o)
	public void addObject(Object o){
		getHibernateTemplate().save(o.getClass().getSimpleName().toString(),o);
	}
	
	public void delectObject(Object o){
		getHibernateTemplate().delete(o.getClass().getSimpleName().toString(),o);
	}
	
	public void updateObject(Object o){
		getHibernateTemplate().update(o.getClass().getSimpleName().toString(), o);
	}
	@SuppressWarnings("rawtypes")
	public List selectObject(String hql){
		return getHibernateTemplate().find(hql);
	}
}
这时公有操作就写完了。这时用UserDao来继承BaseDao

package com.dao;

import java.util.List;

import com.entity.User;

public class UserDaoImpl extends BaseDao{
	public UserDaoImpl(){
		//用于观察启动时,被Spring加载进入IOC容器中
		System.out.println("UserDaoImpl______________________________________");
	}
	public boolean queryById(User u){
		boolean flags = false;
		String hql="from User where username='"+u.getUsername()+"' and password='"+u.getPassword()+"'";
		@SuppressWarnings("unchecked")
		List<User> list = selectObject(hql);
		if(list.size()>0)
			flags = true;
		return flags;
	}
}
这是dao层完毕,需要组成业务逻辑,但是简单登录,没有其他要求,就简单调用一下就好。
public class UserService {
	
	private UserDaoImpl userDao;

	public UserService(){
		System.out.println("UserService____________________________________");
	}
	public boolean register(User u) {
		return userDao.queryById(u);
	}

	public UserDaoImpl getUserDao() {
		return userDao;
	}

	public void setUserDao(UserDaoImpl userDao) {
		this.userDao = userDao;
	}

}
这时需要注入一个UserDaoImpl,才能操作,new操作是在内存的堆上分配内存存储,但是用了spring依赖注入,便不需要进行new,有框架进行管理。

需要用action控制页面了。

public class UserAction {
	private UserService userService;
	private User user;
	public UserAction(){
		System.out.println("UserAction is running ------------------");
	}
	public String register() {
		boolean flags = userService.register(user);
		if (flags)
			return "success";
		return "false";
	}

	public UserService getUserService() {
		return userService;
	}

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

}

配置一下spring和struts。applicationContext中后来的配置文件

<bean id="user" class="com.entity.User"></bean>
	<bean id="userDao" class="com.dao.UserDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<bean id="userService" class="com.service.UserService">
		<property name="userDao" ref="userDao"></property>
	</bean>
<span style="white-space:pre">	</span><!--<span style="font-family: Arial, Helvetica, sans-serif;">scope="prototype"默认情况下是单例模式,设置后可以为每一次请求创建一个action</span><span style="font-family: Arial, Helvetica, sans-serif;">--></span><span style="font-family: Arial, Helvetica, sans-serif;">
</span>	<bean id="userAction" class="com.action.UserAction" scope="prototype">
		<property name="userService" ref="userService"></property>
		<property name="user" ref="user" ></property>
	</bean>

配置struts也要集成到Spring中去,一旦不是有spring生成管理则会报空指针异常。
<constant name="struts.action.extension" value="do,action"/>
	<package name="user" namespace="/" extends="struts-default">
		<!-- name: 与JSP中的form表单中的action属性一致即可 class:要使用spring中的id来映射否则会报空指针  method:此类中的哪一个方法 -->
		<action name="user_*" class="userAction" method="{1}">
			<result name="success">success.jsp</result>
			<result name="false">index.jsp</result>
		</action>
	</package>
</<span style="font-family: Arial, Helvetica, sans-serif;">constant</span><span style="font-family: Arial, Helvetica, sans-serif;">></span>
需要导入struts2-spring-plugin.jar。index.jsp

<div align="center">
  
  		<form action="user_register.do" method="get">
    		姓名: <input type="text" name="user.username"/><br />
    		密码: <input type="password" name="user.password"/><br />
    		<input type="submit" value="ok"/>
    	</form>
  
  	</div>
这样ssh就简单的集成完了




  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值