SSH2(Struts2.1+hibernate4.1+spring4.1)

35129 ワード

cssレイアウト後SSH2(Struts2.1+hibernate4.1+spring4.1)_第1张图片hibernate 3中国語ドキュメントhttp://download.csdn.net/detail/wsk1103/9657379struts 2を使用する.1+hibernate4.1+spring4.1、簡単な登録と登録を持つ小さなプログラムステップ1を実現する.myeclipce 2016 CI 3を使用してssh 2というssh 2プロジェクトを作成する.myeclipceのhibernateからMySQLへの接続を作成します.myeclipceのウィザード機能を使用してstruts 2を作成します.1フレーム4.spring 4を作成する.1フレーム5.hibernate 4を作成する.1フレーム6.hibernateの反射によりUserを生成する.JAva(POJO)とUser.hbm.xml 7. アプリケーションの変更xmlファイル8.データベースと操作するためのDAO層コードを作成する.サービス層コード(DAO層を接続するための)10を記述する.アクション層(コミュニケーションjspとサービス層)11を作成する.アプリケーションContextへのコードの追加を続行します.xml中(注入)12.struts 2を変更する.xml(jsp操作に応答)13.jsp層プロジェクト構造図SSH2(Struts2.1+hibernate4.1+spring4.1)_第2张图片実現:1.myeclipceを使用してssh 2というプロジェクトを作成します.myeclipceにhibernate接続MySQLの接続を作成します.2.1作成方法Windows->perspective->Open Perspective->MyEclipse Hibernate 2.2図の空白を右クリック->new新しいデータベース接続SSH2(Struts2.1+hibernate4.1+spring4.1)_第3张图片2.3接続を作成SSH2(Struts2.1+hibernate4.1+spring4.1)_第4张图片2.4 navicat forMySQLを使用してhibernateという名前のデータベースを作成し、userのテーブルSSH2(Struts2.1+hibernate4.1+spring4.1)_第5张图片3を作成します.ウィザードを使用してstruts 2を自動的にインポートする.1パックSSH2(Struts2.1+hibernate4.1+spring4.1)_第6张图片URLを図のようにSSH2(Struts2.1+hibernate4.1+spring4.1)_第7张图片4に変更する.ウィザードを使用してspring 4を直接作成します.1、デフォルト設定5を使用します.ウィザードを使用してhibernate 4を直接作成します.1SSH2(Struts2.1+hibernate4.1+spring4.1)_第8张图片5.1先ほど作成したhibernate-MySQLの接続を使用し、finishSSH2(Struts2.1+hibernate4.1+spring4.1)_第9张图片6をクリックします.先ほど作成したuserテーブルで反射してuserPOJOとuserを生成する.hbm.xml(自動生成後にアプリケーションContext.xmlに自動注入)6.1反射操作:userテーブル右ボタン->hibernate reverse engineering、情報記入後finishSSH2(Struts2.1+hibernate4.1+spring4.1)_第10张图片7.アプリケーションの変更xmlファイル、文中の赤字部分
<bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName"
            value="com.mysql.jdbc.Driver">
        property>//       ,    ,          
        <property name="url"
            value="jdbc:mysql://localhost:3306/hibernate">
        property>
        <property name="username" value="root">property>
        <property name="password" value="123456">property>
    bean>
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <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">trueprop>//  sql,    ,     
                <prop key="hibernate.hbm2ddl.auto">updateprop>//       ,    
            props>
        property>
        <property name="mappingResources">
            <list>
                <value>com/wsk/bean/User.hbm.xmlvalue>list>
        property>bean>

8.hibernate操作データベース8.1を介してインタフェースを記述するためのDAO層の記述
package com.wsk.dao;

public interface UserDAO{
    public  void register(T t);//  
    public boolean login(String user);//  
}

8.2実装インタフェース
package com.wsk.dao;

import java.util.Iterator;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

public class UserDAOImpl implements UserDAO {
    private SessionFactory sessionFactory;
    //  ,                         
    public boolean login(String user) {
        //         
        List list=this.getSession().createQuery(user).list();
        //    
        if (!list.isEmpty()){
            //    
            Iterator iterator=list.iterator();
            String getString=(String) iterator.next();
            if (getString!=null||getString!="")
                return true;
        }
        return false;
    }
    //    
    public  void register(T t) {
        //       
        this.getSession().save(t);
    }
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    public Session getSession(){
        //hibernate4   openSession,   getCurrentSession
        return sessionFactory.openSession();
    }
}

9.DAO層を接続するためのサービス層の作成
package com.wsk.service;

import com.wsk.dao.UserDAOImpl;
public class Service {
    private UserDAOImpl userDAOImpl;

    public boolean doLogin(String name,String password){
        if (name==null||password==null)
            return false;
        String sqlString="select u.password from "
                + "com.wsk.bean.User u where u.name='"+name
                +"' and password='"+password+"'";
        if (userDAOImpl.login(sqlString)){
            return true;
        }
        return false;
    }

    public void register(T user){
        userDAOImpl.register(user);
    }
    public UserDAOImpl getUserDAOImpl() {
        return userDAOImpl;
    }
    public void setUserDAOImpl(UserDAOImpl userDAOImpl) {
        this.userDAOImpl = userDAOImpl;
    }
}

10.jspとサービス層を接続するためのaction層の作成
package com.wsk.action;

import com.opensymphony.xwork2.ActionSupport;
import com.wsk.bean.User;
import com.wsk.service.Service;

public class UserAction extends ActionSupport{
    private String name;
    private String password;
    User user=new User();
    Service service=new Service();

    public String login(){
        if (service.doLogin(name, password)){
            return SUCCESS;
        }
        return ERROR;
    }

    public String register(){
        if (name.isEmpty()||name==""||password.isEmpty()||password=="")
            return ERROR;
        user.setName(name);
        user.setPassword(password);
        service.register(user);
        return SUCCESS;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Service getService() {
        return service;
    }
    public void setService(Service service) {
        this.service = service;
    }
}

11.アプリケーションContextを変更する.xmlファイル、注入を実現し、
    id="dao" class="com.wsk.dao.UserDAOImpl">
        <property name="sessionFactory" ref="sessionFactory">property>
    
    id="service" class="com.wsk.service.Service">
        <property name="userDAOImpl" ref="dao">property>
    
    id="useraction" class="com.wsk.action.UserAction">
        <property name="service" ref="service">property>
    

合計:アプリケーションContext.xml
version="1.0" encoding="UTF-8"?>
"http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" xmlns:tx="http://www.springframework.org/schema/tx">
    id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName"
            value="com.mysql.jdbc.Driver">
        property>
        <property name="url"
            value="jdbc:mysql://localhost:3306/hibernate">
        property>
        <property name="username" value="root">property>
        <property name="password" value="123456">property>
    
    id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        property>
        <property name="hibernateProperties">
            
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.MySQLDialect
                prop>
                <prop key="hibernate.show_sql">trueprop>
                <prop key="hibernate.hbm2ddl.auto">updateprop>
            
        property>
        <property name="mappingResources">
            <list>
                com/wsk/bean/User.hbm.xmllist>
        property>
    id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    
    transaction-manager="transactionManager" />
    id="dao" class="com.wsk.dao.UserDAOImpl">
        <property name="sessionFactory" ref="sessionFactory">property>
    
    id="service" class="com.wsk.service.Service">
        <property name="userDAOImpl" ref="dao">property>
    
    id="useraction" class="com.wsk.action.UserAction">
        <property name="service" ref="service">property>
    

12.struts 2を修正する.xml、本文の赤い部分
 

<struts>
    <package name="1" extends="struts-default">
        <action name="useraction" class="com.wsk.action.UserAction">
            <result>success.jspresult>
            <result name="error">error.jspresult>
        action>
    package>
struts>  

13.JSP 13.1作成登録画面login.jsp
 "java" import="java.util.*" pageEncoding="UTF-8"%>

<html>
  <head>
    <title>logintitle>
  head>
  <body>
    <form action="useraction!login" method="post">
           :<input type="text" name="name"><br>
              :<input type="password" name="password"><br>
        <input type="submit" value="  "><br>
    form>
    <a href="register.jsp">  a>
  bod1y>
html>

13.2登録画面registerを作成する.jsp
 "java" import="java.util.*" pageEncoding="UTF-8"%>

<html>
  <head>
    <title>registertitle>
  head>
  <body>
     <form action="useraction!register" method="post">
           :<input type="text" name="name"><br>
              :<input type="password" name="password"><br>
        <input type="submit" value="  ">
    form>
    <a href="index.jsp">  a>
  body>
html>

13.3ログイン成功ページの作成success.jsp
 "java" import="java.util.*" pageEncoding="UTF-8"%>
"/struts-tags" prefix="s"%>

<html>
  <head>
    <title>successtitle>
  head>
  <body>
    <s:property value="name"/> welcom.<br>
    <a href="index.jsp">  a>
  body>
html>

13.4ログイン失敗ページerrorを作成する.jsp
 "java" import="java.util.*" pageEncoding="UTF-8"%>

<html>
  <head>
    <title>errortitle>
  head>
  <body>
        <br>
    <a href="index.jsp">  a>
  body>
html>

まとめ:1.初めて配置したとき、アプリケーションContextで忘れました.xmlで追加
<property name="driverClassName"
            value="com.mysql.jdbc.Driver">
        property>

データベースに接続するときにドライバが見つからずorgをエラーする.hibernate.exception.GenericJDBCException: Could not open connection 2. Spring統合hibernate 4.1の場合、セッションを取得する場合はgetCurrentSessionを使用し、openSessionを使用しないでください.(理由とgetCurrentSessionの使用方法については、接続を参照してください.http://blog.csdn.net/wsk1103/article/details/53222352)
    public Session getSession(){
        return sessionFactory.getCurrentSession();
    }

このセッションでは、トランザクションが自動的にオンになり、トランザクション3がオフになります.applicationContext.xml注入の場合、propertyのnameはこのクラスに存在する必要があり、getメソッドとsetメソッド4を持つ必要がある.プロジェクトのダウンロードアドレスhttp://download.csdn.net/detail/wsk1103/9633990 5. 一時バージョンhttp://blog.csdn.net/wsk1103/article/details/52783346