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

来源:互联网 发布:夏普m261n网络扫描 编辑:程序博客网 时间:2024/05/16 09:35

贫道放假第二天了,是时候写一个简单的入门了,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 accessorspublic 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就简单的集成完了




0 0