EJB3.0+Struts2结合登陆小案例

来源:互联网 发布:2016网络诈骗案破案率 编辑:程序博客网 时间:2024/04/28 11:15

EJB3.0+Struts2结合登陆小案例

1.   开发环境

IDE开发工具:

EJB后台:Eclipse Java EE IDE for Web Developers

strtus2前台:MyEclipse9

后台EJB容器:jboss-4.2.3.GA

前台服务器:tomcat6.0.32

后台数据库:MysQL5.1

 

2.   EJB后台开发

 

2.1   新建EJB3.0工程EJB3.0_Struts2_LoginTest

1.        右键->New->Project


2.        选择EJB Project->next


3.        Project  name为“Eclipse Java EE IDE for Web Developers”,Target runtime选择配置好的JBOSS4.2,EJB module version选择3.0,然后finish。新的EJB3.0工程创建成功。


2.2   后台项目开发

2.2.1 开发UserBean实体Bean

packagecom.ejb3.jpa;

 

importjavax.persistence.Column;

importjavax.persistence.Entity;

importjavax.persistence.Id;

 

@Entity(name="USERS")

public classUserBean {

      private String userName;

      private String passWd;

   

    @Id

    @Column(name="userName")

  public String getUserName() {

     return userName;

  }

  public void setUserName(String userName) {

     this.userName= userName;

  }

  @Column(name="passWd")

  public String getPassWd() {

     return passWd;

  }

  public void setPassWd(String passWd) {

     this.passWd = passWd;

  }

     

     

}

2.2.2开发远程接口CheckRemote

package com.ejb3.service;

 

publicinterface CheckRemote {

  

   boolean check(String name,String password);

  

}

2.2.3 开发远程接口的实现类CheckRemoteImpl(Stateless

package com.ejb3.service;

 

import java.util.List;

 

import javax.ejb.Remote;

import javax.ejb.Stateless;

import javax.persistence.EntityManager;

importjavax.persistence.PersistenceContext;

import javax.persistence.Query;

 

import com.ejb3.jpa.UserBean;

 

@Stateless

@Remote

public class CheckRemoteImpl implementsCheckRemote {

 

         @PersistenceContext(unitName= "loginDS")

         //注入EntityManager,现在很流行注入啊,呵呵

         EntityManagerem;

 

         @SuppressWarnings("unchecked")

         publicboolean check(String name, String password) {

 

                   //Stringsql = "SELECT * FROM USERS WHERE userName ="+name+" AND passWd="+password;

                   Stringsql = "SELECT u FROM USERS u WHERE u.userName = :n AND u.passWd =:p";

                   Queryquery = em.createQuery(sql);

                   System.out.println("name:"+name);

                   System.out.println("password:"+password);

                   query.setParameter("n",name);

                   query.setParameter("p",password);

                  

                   List<UserBean>us = query.getResultList();

                   if(us.size() > 0) {

                            returntrue;

                   }

                   returnfalse;

         }

 

}

2.2.4在META-INF下创建文件persistence.xml文件


配置如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<persistenceversion="1.0"

   xmlns="http://java.sun.com/xml/ns/persistence"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

   <persistence-unitname="loginDS">

      <!-- <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>

      -->

      <jta-data-source>java:/MySqlDS</jta-data-source>

      <class>com.ejb3.jpa.UserBean</class>

      <properties>

        <propertyname="hibernate.hbm2ddl.auto"value="create-drop"/>

      </properties>

   </persistence-unit>

</persistence>

2.2.5在com.cn.client包下开发客户端程序(只是用于测试EJB3.0

package com.cn.client;

 

import javax.naming.InitialContext;

import java.util.Properties;

 

import com.ejb3.service.CheckRemote;

 

publicclass Client {

  

    publicstaticvoid main(String[]args){

       Properties props = new Properties();  

       props.setProperty("java.naming.factory.initial",  

                      "org.jnp.interfaces.NamingContextFactory");  

       props.setProperty("java.naming.provider.url","localhost:1099");

       CheckRemote checker=null;

           try {

             System.out.println("*****************************");

             InitialContext context =newInitialContext(props);

            

             System.out.println("&&&&&&&&&&&&&&&&&&&");

                    /*--------------2----------------*/ 

             checker = (CheckRemote)context.lookup("CheckRemoteImpl/remote"); 

             System.out.println(checker); 

        } catch (Exception e) {

           //TODO: handleexception

        }

        String name="admin";

        String psd="111111";

     

        if (checker.check(name, psd)) { 

           //System.out.println("name:"+name);

           //System.out.println("psd:"+psd);

              System.out.println("登陆成功"); 

         }else{

          

           System.out.println("登录失败");

         }

        

     

    }

 

  

}

 

2.3   配置MySql的datasource

1.  将mysql-connector-java-5.1.16.jar包放置到JBOSS_HOME\server\default\lib目录下.

2.  将配置好的mysql-ds.xml放到JBOSS_HOME\server\default\deploy目录下。配置如下:

<?xmlversion="1.0" encoding="UTF-8"?>

<datasources>

  <local-tx-datasource>

    <jndi-name>MySqlDS</jndi-name>

   <connection-url>jdbc:mysql://192.168.9.85:3306/login</connection-url>

   <driver-class>com.mysql.jdbc.Driver</driver-class>

    <user-name>root</user-name>

    <password>root</password>

   <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>

<metadata>

      <type-mapping>mySQL</type-mapping>

    </metadata>

  </local-tx-datasource>

</datasources>

2.3.1创建数据库

1、创建数据库login

2、创建数据表users

DROP TABLE IFEXISTS `users`;

CREATE TABLE users(

  userName varchar(255) NOT NULL,

  passWd varchar(255) NOT NULL,

  PRIMARY KEY (`userName `)

)

2.4   测试运行

1.  将titan工程发布到JBOSS,启动JBOSS

2.  打开client程序,右键->Run As->Java Application


2.5   打包EJB工程

开发好EJB工程以后,将其打包成*.jar文件放置到Strut2工程目录的lib文件夹下。

3.   Struts2前台开发

3.1   创建Strut2工程:EJB3.0_Struts2_LoginClient

1.  创建Strut2工程:EJB3.0_Struts2_LoginClient后,

2.  将打包后的EJB3.0工程的jar文件放置到Strut2工程工程的WebRoot/ WEB-INF /lib目录下

3.  并将jboss-4.2.3.GA的D:\jboss-4.2.3.GA\client目录下所有jar包拷贝到Strut2工程工程的WebRoot/ WEB-INF /lib目录下。

备注:2、3步骤很重要。

3.2   配置web.xml文件

配置如下:

  <welcome-file-list>

     <welcome-file>login.jsp</welcome-file>

  </welcome-file-list>

  <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>*.action</url-pattern>

  </filter-mapping>

3.3   配置struts.xml文件

<packagename="struts2"extends="struts-default">

     <actionname="login"class="com.ejb.struts.action.LoginAction">

        <resultname="success">success.jsp</result>

        <resultname="failture">failure.jsp</result>

     </action>

  </package>

3.4   开发前台页面

3.4.1login.jsp

<formaction="login.action"method="post">

        name:

        <inputtype="text"name="name"/>

        <br>

        password:

        <inputtype="password"name="psd"/>

        <br>

        <inputtype="submit"value="submit">

     </form>

3.4.2登陆失败页面failure.jsp

只是为了演示效果,开发很简单,只写“登录失败”即可!

3.4.3登陆成功页面failure.jsp

只是为了演示效果,开发很简单,只写“登录成功”即可!

3.5   开发LoginAction

package com.ejb.struts.action;

 

import java.util.Properties;

import javax.naming.*;

import com.ejb3.service.CheckRemote;

 

 

 

public classLoginAction {

  private String name;

  private String psd;

 

  public String getName() {

     return name;

  }

 

  public voidsetName(String name) {

     this.name =name;

  }

 

  public String getPsd() {

     return psd;

  }

 

  public voidsetPsd(String psd) {

     this.psd =psd;

  }

 

 

  public String execute() throws Exception { 

             /*------------1---------------*/ 

      Properties props = newProperties();  

      props.setProperty("java.naming.factory.initial",  

                     "org.jnp.interfaces.NamingContextFactory");  

      props.setProperty("java.naming.provider.url","localhost:1099");

      System.out.println(props.getProperty("java.naming.factory.initial"));

      System.out.println(props.getProperty("java.naming.provider.url"));

      CheckRemote checker=null;

          try{

            System.out.println("*****************************");

            InitialContext context = new InitialContext(props);

          

             System.out.println("&&&&&&&&&&&&&&&&&&&");

            System.out.println(context);

                    /*--------------2----------------*/ 

             checker = (CheckRemote) context.lookup("CheckRemoteImpl/remote"); 

             System.out.println(context); 

        } catch (Exception e) {

          // TODO: handle exception

        }

        System.out.println("name:"+name);

        System.out.println("psd:"+psd);

        //System.out.println(checker.check(name, psd));

        if(checker.check(name,psd)){

            System.out.println("登陆成功!");

               return"success"

           } 

        System.out.println("登陆失败!");

           return"failture"

        }

 

 

}

至此前台开发完成!!!

4.   运行

1. 在eclipse JavaEEE中发布EJB工程,并启动JBOSS

2. 在MyEclipse9中部署strut前端,并启动tomcat6。

3. 打开IE,输入http://192.168.9.85:7070/EJB3.0_Struts2_LoginClient/login.jsp


4. 输入用户名、密码即可验证。

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击