注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云之南

风声,雨声,读书声,声声入耳;家事,国事,天下事,事事关心

 
 
 

日志

 
 
关于我

专业背景:计算机科学 研究方向与兴趣: JavaEE-Web软件开发, 生物信息学, 数据挖掘与机器学习, 智能信息系统 目前工作: 基因组, 转录组, NGS高通量数据分析, 生物数据挖掘, 植物系统发育和比较进化基因组学

网易考拉推荐

struts-2.1.8.1+jquery-1.3.2+spring-framework-2.5.6集成  

2010-06-04 11:16:52|  分类: java-j2ee |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


首先来看下整个项目结构:需要导入的struts2和spring2.5的包.大致就是这些.
登录页面是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层里.

看一下效果图:


和预期结果一样,提示登录成功.完整的过程就是这样,代码全贴出来了,没有做过多解释,仅仅是一步一步做出来的.可能写的不是很周到,也有可能有出入,欢迎指正.
 
本篇文章来源于:网贝建站 http://www.netbei.com   原文链接:http://www.netbei.com/2009/1221/18871.html

  评论这张
 
阅读(965)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016