jQuery ajax struts action 비동기 리 셋 요청

이 사례 는 JQuery ajax 와 struts 로 만 든 작은 사례 입 니 다.이 사례 에서 자바 Util 의 list 를 json 의 형식 으로 바 꾸 는 두 가지 방식 으로 첫 번 째 는 json-lib.jar 라 는 jar 가방 으로 바 꾸 는 것 입 니 다.두 번 째 는 gole 의 gs-2.1.jar 로 바 꾸 는 것 입 니 다.대가족 은 필요 에 따라 해당 하 는 jar 가방 을 가 져 올 수 있 습 니 다.여기 서 테스트 를 위해 두 종류의 jar 가방 을 모두 가 져 왔 습 니 다.이제 본론 으로 들 어가 보도 록 하 겠 습 니 다.
첫 번 째 단계:관련 jar 패 키 지 를 가 져 옵 니 다.이 샘플 은 struts 관련 jar 패 키 지 를 가 져 와 야 합 니 다.json-lib.jar,gson-2.1.jar 는 임의로 선택 할 수 있 지만 모두 가 져 와 야 합 니 다.테스트 를 위해 두 가지 jar 패키지 의 변환 방식 이 모두 사용 되 었 기 때 문 입 니 다.
두 번 째 단계:웹.xml 설정

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
 xmlns="http://java.sun.com/xml/ns/javaee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <display-name></display-name> 
 <!--   Struts2       -->
 <filter>
 <filter-name>struts2</filter-name>
 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 </filter>
 <filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>
 
 <!--   Spring ContextListener,            BeanFactory -->
 <context-param> <!--  applicationContext.xml    WEB-INF         ,        -->
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:applicationContext.xml</param-value> 
 </context-param>
</web-app>

세 번 째 단계:새 struts.xml,기본 admin/아래로 이동/WEB-INF/index.jsp

<?xml version="1.0" encoding="UTF-8" ?>
<!-- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -->
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://www.yxccc.com/news/">

<struts>

 <package name="bg" namespace="/" extends="struts-default">
 <default-action-ref name="index"/>
 <!-- =================    ====================== -->
 <action name="index">
  <result>/WEB-INF/index.jsp</result>
 </action>
 </package>

</struts>

네 번 째 단계:AjaxRequestAction.java 파일 을 작성 합 니 다.두 가지 요청 을 했 습 니 다.하 나 는 문자열 에 직접 요청 하 는 것 이 고 다른 하 나 는 배열 형식 으로 요청 하 는 데이터 입 니 다.그러나 이 데 이 터 는 JSON 이 지원 하 는 배열 로 변환 해 야 합 니 다.구체 적 으로 다음 과 같 습 니 다.

package com.fengqi.action;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.apache.struts2.ServletActionContext;
import com.google.gson.Gson;
import com.opensymphony.xwork2.ActionSupport;

/**
 *     :2014-10-24,ajax   action  
 */
public class AjaxRequestAction extends ActionSupport{
 private String sex;
 @Override
 public String execute() throws Exception {
 return super.execute();
 }
 
 /**
 * ajax  , json          
 */
 public void ajaxString(){
 System.out.println(sex);
 //    Response
 HttpServletResponse response = ServletActionContext.getResponse(); 
 //      
 response.setCharacterEncoding("UTF-8"); 
 try {
  if(sex.equals("nan")){
  response.getWriter().write("    ");
  }else if(sex.equals("nv")){
  response.getWriter().write("    ");
  }else{
  response.getWriter().write("     ");
  }
  //        
 } catch (IOException e) {
  e.printStackTrace();
 }
 }
 
 /**
 * ajax  , list       ,     list   Util List,         json   List
 */
 public void ajaxList(){
 List<Object> list = new ArrayList<Object>();
 list.add("  ");
 list.add("  ");
 //     :  json-lib   JSONArray List   JSONArray  。
 JSONArray jsonArray = JSONArray.fromObject(list);
 //     :  goole json  List   Json  。
 Gson gson = new Gson();
 String gsonList = gson.toJson(list);
 //    Response
 HttpServletResponse response = ServletActionContext.getResponse(); 
 //      
 response.setCharacterEncoding("UTF-8"); 
 try {
  //        
  response.getWriter().println(jsonArray);
 } catch (IOException e) {
  e.printStackTrace();
 }
 }

 public String getSex() {
 return sex;
 }

 public void setSex(String sex) {
 this.sex = sex;
 }
 
}

다섯 번 째 단계:struts.xml 파일 을 업데이트 할 때 AjaxRequestAction.java 의 접근 경 로 를 설정 하여 다음 코드 를 추가 합 니 다.

<package name="ajax" namespace="/ajax" extends="struts-default">
<!-- =================ajax    ====================== -->
<action name="ajax_*" class="com.fengqi.action.AjaxRequestAction" method="ajax{1}">
</action>
</package>

마지막 struts.xml 의 전체 파일 은?

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://www.yxccc.com">

<struts>

 <package name="bg" namespace="/admin" extends="struts-default">
 <default-action-ref name="index"/>
 <!-- =================    ====================== -->
 <action name="index">
  <result>/WEB-INF/index.jsp</result>
 </action>
 </package>
 <package name="ajax" namespace="/ajax" extends="struts-default">
 <!-- =================ajax    ====================== -->
 <action name="ajax_*" class="com.fengqi.action.AjaxRequestAction" method="ajax{1}">
 </action>
 </package>

</struts>

여섯 번 째 단계:index.jsp 파일 을 작성 합 니 다.두 가지 요청 을 했 습 니 다.하 나 는 문자열 에 직접 요청 하 는 것 이 고,다른 하 나 는 배열 형식의 데 이 터 를 요청 하 는 것 입 니 다.그러나 이 데 이 터 는 JSON 이 지원 하 는 배열 로 변환 해 야 합 니 다.구체 적 으로 다음 과 같 습 니 다.

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

 <head>
  <base href="<%=basePath%>" rel="external nofollow" >
  
  <title>ajax        </title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">  
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
     <link href="http://www.yxccc.com/css/css.css" rel="stylesheet" type="text/css" />
 <script src="js/jquery-2.1.1.min.js"></script>
 <script type="text/javascript">
 $(document).ready(function() {
 $("#hh1").click(function(){
  $.ajax({
  url:"ajax/ajax_String",//  url
  data:{sex:$("#txt1").val()},
  success:function(data){//       
   $("div").html(data);//         div 
  }
  });
 });
 $("#hh2").click(function() {
  $.ajax({
       url: "ajax/ajax_List",//  url http://www.yxccc.com
       //cache: false,
       type: "POST", //   ,   post
       datatype: 'json', //      ,   json  
       success: function(data,status){
    data = $.parseJSON(data); //            json  
    //   option                        ,       ,       ,           。
       $("option").remove(); 
       $("select").append("<option>   </option>");// select     option   。
       $(data).each(function(i){ //       data  
          $("select").append("<option>"+data[i]+"</option>");
       })
       }
     });
   });
 });
 </script>
 
 </head>
 <body>
 <br>
  <h2 align="center">   ajax  Demo,      Struts  action</h2> <br>
  <button id="hh1">         </button>
  <button id="hh2">    JSON   List</button><br><br>
  <div>   div  </div><br>
       :<select id="txt1" name="sex">
   <option>   </option>
   <option value="nan"> </option>
   <option value="nv"> </option>
  </select><br><br>
  
  <select>
  <option>select  </option>
  </select>
  
 </body>
</html>

이렇게 간단 한 ajax 요청 이 완료 되 었 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기