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:
    代码
     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:

 

代码
 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类,用来保存登录表单数据:

代码
 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业务处理类,没有实现什么接口,仅做简单演示.

代码
 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的:

代码
 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进行配置.

代码
 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:

代码
 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了:

代码
 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实例教程

posted @ 2009-12-21 15:02  Mr.King  阅读(3467)  评论(21编辑  收藏  举报