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层里.

看一下效果图:

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值