程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> struts-2.1.8.1+jquery-1.3.2+spring-framework-2.5.6集成

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

編輯:關於JAVA

自己做的,都是穩定版本.利用jquery的ajax發送請求到Action.Spring負責組織Action 與業務實現類.有一段時間沒搞Java EE了,開始恢復功力.

首先來看下整個項目結構:

需要導入的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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved