struts-2.1.8.1+jquery-1.3.2+spring-framework-2.5.6集成[登录demo]

自己做的,都是稳定版本.利用jquery的ajax发送请求到Action.Spring负责组织Action与业务实现类.有一段时间没搞Java EE了,开始恢复功力.

  1. 首先来看下整个项目结构:需要导入的struts2和spring2.5的包.大致就是这些.
  2. 登录页面是Index.jsp:
    ExpandedBlockStart.gif 代码
     1  < table  class ="wwFormTable" >
     2                   < tr >
     3                       < td  class ="tdLabel" >
     4                           < label  for ="Login_username"  class ="label" >
     5                              用户名:
     6                           </ label >
     7                       </ td >
     8                       < td >
     9                           < input  type ="text"  name ="username"  value =""  id ="Login_username"   />
    10                       </ td >
    11                   </ tr >
    12                   < tr >
    13                       < td  class ="tdLabel" >
    14                           < label  for ="Login_password"  class ="label" >
    15                              密码:
    16                           </ label >
    17                       </ td >
    18                       < td >
    19                           < input  type ="password"  name ="password"  id ="Login_password"   />
    20                       </ td >
    21                   </ tr >
    22                   < tr >
    23                       < td  colspan ="2" >
    24                           < div  align ="right" >
    25                               < input  type ="button"  id ="login"  value ="登录"   />
    26                           </ div >
    27                       </ td >
    28                   </ tr >
    29               </ table >

     

本来用的是struts2标签,为了看清楚标签生成的是什么样的html,俺就把生成后的html拷过来直接用了.免得影响我用jquery读取表单元素.

接下来就需要jquery来发送ajax请求到我的LoginAction:

 

ExpandedBlockStart.gif 代码
 1           < script type = " text/javascript " >
 2              $(document).ready(
 3                       function () {
 4                          $( " #login " ).click(
 5                                   function () {
 6                                      $.ajax( {
 7                                          url :  " Login.action " ,
 8                                          data :  " username= "
 9                                                   +  $( " input[name='username'] " ).val()
10                                                   +   " &password= "
11                                                   +  $( " input[name='password'] " ).val(),
12                                          success :  function (msg) {
13                                              $( " #message " ).html(msg);
14                                          }
15                                      });
16                                  });
17                      });
18           < / script>

 

#message是一个层,用来显示成功返回的内容.

3.实体类,UserInfo类,用来保存登录表单数据:

ExpandedBlockStart.gif 代码
 1  package  com.mag.beans;
 2  /**
 3   * 用户实体类
 4   * 
 5   *  @author  Mr.King
 6   *
 7    */
 8  public   class  UserInfo {
 9 
10       public  UserInfo(){
11      }
12      
13       private  String username;
14       private  String password;
15 
16       public  String getUsername() {
17           return  username;
18      }
19 
20       public   void  setUsername(String username) {
21           this .username  =  username;
22      }
23 
24       public  String getPassword() {
25           return  password;
26      }
27 
28       public   void  setPassword(String password) {
29           this .password  =  password;
30      }
31  }

 

4.UserInfoManager业务处理类,没有实现什么接口,仅做简单演示.

ExpandedBlockStart.gif 代码
 1  package  com.mag.util;
 2 
 3  public   class  UserInfoManager {
 4 
 5       public   boolean  checkUser(String name, String pass) {
 6 
 7           return  name.trim().equalsIgnoreCase( " admin " &&  pass.equals( " admin " ?   true
 8                  :  false ;
 9      }
10  }

 

没有与数据库交互,直接判断了一下字符串.呵呵 .留作Hibernate来完成吧.

5.接下来当然要看下web.xml是怎么配置struts和spring的:

ExpandedBlockStart.gif 代码
 1  <? xml version="1.0" encoding="UTF-8" ?>
 2  < web-app  version ="2.5"  xmlns ="http://java.sun.com/xml/ns/javaee"
 3      xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
 4      xsi:schemaLocation ="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
 5       <!--  配置struts2拦截器  -->
 6       < filter >
 7           < filter-name > struts2 </ filter-name >
 8           < filter-class > org.apache.struts2.dispatcher.FilterDispatcher </ filter-class >
 9       </ filter >
10       < filter-mapping >
11           < filter-name > struts2 </ filter-name >
12           < url-pattern > /* </ url-pattern >
13       </ filter-mapping >
14       <!--  配置默认首页  -->
15       < welcome-file-list >
16           < welcome-file > index.jsp </ welcome-file >
17       </ welcome-file-list >
18       < login-config >
19           < auth-method > BASIC </ auth-method >
20       </ login-config >
21       <!--  配置spring监听  -->
22       < listener >
23           < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
24       </ listener >
25       < context-param >
26           < param-name > contextConfigLocation </ param-name >
27           < param-value > classpath:applicationContext.xml </ param-value >
28       </ context-param >
29  </ web-app >

 

tomcat根据web.xml的配置.来监听struts与spring.

6.接下来是struts.xml.需要对Action进行配置.

ExpandedBlockStart.gif 代码
 1  <? xml version="1.0" encoding="UTF-8"  ?>
 2  <! DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd" >
 3  < struts >
 4       < include  file ="struts-default.xml" ></ include >
 5       < package  name ="default"  extends ="struts-default" >
 6           <!--  Action在applicationContext.xml里进行配置  -->
 7           < action  name ="Login"  class ="userlogin" >
 8               < result  name ="success" > /welcome.jsp </ result >
 9               < result  name ="error" > /error.jsp </ result >
10           </ action >
11       </ package >
12  </ struts >

 

这里因为与Spring结合了,当然代码组织就需要靠spring来完成了.所以这里的class只指定了一个名称.会在spring配置文件里的bean id里见到.那里会指定登录处理的Action.

7.Spring配置文件applicationContext.xml:

ExpandedBlockStart.gif 代码
 1  <? xml version="1.0" encoding="UTF-8" ?>
 2  < beans  default-autowire ="byName"
 3      xmlns ="http://www.springframework.org/schema/beans"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
 4      xmlns:p ="http://www.springframework.org/schema/p"
 5      xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
 6       <!--  配置业务处理类  -->
 7       < bean  id ="userUtil"  class ="com.mag.util.UserInfoManager" ></ bean >
 8       <!--  配置Action,织入业务类   -->
 9       < bean  id ="userlogin"  class ="com.mag.str2.LoginAction" >
10           < property  name ="userInfoManager"  ref ="userUtil" ></ property >
11       </ bean >
12  </ beans >

 

这里将业务类与Action组织在一起了,所谓的注入吧.

8.最后就来看下我们的Action了:

ExpandedBlockStart.gif 代码
 1  package  com.mag.str2;
 2 
 3  import  com.mag.beans.UserInfo;
 4  import  com.mag.util.UserInfoManager;
 5  import  com.opensymphony.xwork2.Action;
 6  import  com.opensymphony.xwork2.ActionContext;
 7  import  com.opensymphony.xwork2.ModelDriven;
 8 
 9  public   class  LoginAction  implements  Action, ModelDriven < UserInfo >  {
10 
11       private  UserInfo userInfo  =   new  UserInfo();
12 
13       public  UserInfo getModel() {
14           return  userInfo;
15      }
16 
17       private  UserInfoManager userInfoManager  =   null ;
18 
19       public   void  setUserInfoManager(UserInfoManager userInfoManager) {
20           this .userInfoManager  =  userInfoManager;
21      }
22 
23       public  UserInfoManager getUserInfoManager() {
24           return  userInfoManager;
25      }
26 
27       public  String execute()  throws  Exception {
28 
29           if  (userInfoManager.checkUser(userInfo.getUsername(), userInfo
30                  .getPassword())) {
31               // 将用户名存入session
32              ActionContext.getContext().getSession().put( " user " ,
33                      userInfo.getUsername());
34               return  SUCCESS;
35          }  else  {
36               return  ERROR;
37          }
38      }
39  }
40 

 

 

这里实现了两个接口,Action主要用到了它的常量SUCCESS,ERROR.ModelDriven用于处理接收的表单元素与实体类的对应.这里有三种方法,我选择了这种,感觉最为方便.呵呵.execute()方法是必须的.感觉struts2的确不错.简化了很多.UserInfoManager就是我们的业务处理类,userInfoManager对象已经在spring配置文件里配置好了.对象的实例化就交给我们的框架来完成了.

根据返回的结果,在struts.xml配置的resutl就可以帮你进行跳转了.

9.welcome.jsp和error.jsp很简单,只返回两串文本.

welcome.jsp:

<% @ page language = " java "  import = " java.util.* "  pageEncoding = " UTF-8 " %>

    
    欢迎,${sessionScope.user}.您已经登录!

 

error.jsp:

1  <% @ page language = " java "  import = " java.util.* "  pageEncoding = " UTF-8 " %>
2 
3  < font  color ="red" > 用户名或密码错误! </ font >

 

返回的结果jquery会处理,并显示在message层里.

看一下效果图:

和预期结果一样,提示登录成功.完整的过程就是这样,代码全贴出来了,没有做过多解释,仅仅是一步一步做出来的.可能写的不是很周到,也有可能有出入,欢迎指正.

 

今天再查与hibernate集成时,看到篇不错的文章.Struts2.1.x+Spring2.5.x+Hibernate3.2.x实例教程

转载于:https://www.cnblogs.com/magical/archive/2009/12/21/1628883.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值