Json初体验(第七天)

第七天;

构思:
1.通过ajax把课程id(每个课程都有自己的唯一id)传到后台
2.后台拿到id进行查询并组装成list
3.把list装换成json数据
4.通过PrintWriter out = ServletActionContext.getResponse().getWriter();把数据传到前台,前台进行解析并判断出是否为多选题

文件结构图发生了变化

文件结构图

预览

今天要做出的效果

onepage

<script type="text/javascript">
      function showcontent(classid){
            $.ajax({
            type:"post",//请求方式
            url:"answer/subject_list.action",//请求路径
            data:{//传参
                classid:classid,
            },
            dataType:"json",//数据格式
            success : function(datajson) {
                   //清空显示层中的数据
                    $("#message").html("");
                    var arr = datajson;  
                    var radio = "radio";
                    $.each(arr, function(index, content)
                    { 
                      //单选题与多选题判断 
                      if (content.resulter.length>1){
                             radio = "checkbox";
                              }
                            else{
                             radio = "radio";
                              }; 
                    var obj = "<fieldset><ul><li><h3><xmp>"+(index+1)+"、"+content.subjecttext+"</xmp></h3></li><hr/><li><input name='"+content.subjectid+"' type='"+radio+"' value='A'/>A、"+content.subjecta+"</li><li><input name='"+content.subjectid+"' type='"+radio+"' value='B'/>B、"+content.subjectb+" </li><li><input name='"+content.subjectid+"' type='"+radio+"' value='C'/>C、"+content.subjectc+" </li><li><input name='"+content.subjectid+"' type='"+radio+"' value='D'/>D、"+content.subjectd+" </li><li><input  type='button' value='提交' onclick='checkResult("+content.subjectid+")'/><span id='"+content.subjectid+"'></span></li><ul></fieldset><br/>";                     
                     $("#message").append(obj);
                    });
                },
            error:function(datajson){ 
                      alert("error"); 
            },
           });  
        }; 
</script>

struts.xml

加上下面这个action

<action name="subject_list" class="subjectAction" method="list" />

applicationContext.xml

加上下面这个bean

<!-- utils -->
    <bean id="utils" class="com.jianshu.utils.Utils" scope="prototype" />

今天我们多出来的一个包,里面只有一个类

Utils

package com.jianshu.utils;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

import org.apache.struts2.ServletActionContext;

public class Utils {
      /**
     * 封装json共用,自动识别list,针对subject
     * @param object
     * @throws IOException
     */
    public void subjectJson(Object object) throws IOException {
        HttpServletResponse response = ServletActionContext.getResponse();
        /* 设置格式为text/json */
        response.setContentType("text/json");
        /* 设置字符集为'UTF-8' */
        response.setCharacterEncoding("UTF-8");

        PrintWriter out = ServletActionContext.getResponse().getWriter();

        JsonConfig config = new JsonConfig();
        config.setExcludes(new String[] { "allclass", "errorsubjects" });// 除去allclass,errorsubjects属性,否则不能组装成json
        String json;
        if(object instanceof List){
            json = JSONArray.fromObject(object, config).toString();//JSONArray对list的装换
        }else{
            json = JSONObject.fromObject(object, config).toString();// JSONObject单个对象的装换
        }
        // 强制刷新
        out.write(json);
        out.flush();
        out.close();
    }
}

同时根据struts.xml的变化我们的SubjectAction.java也发生了变化

SubjectAction.java

package com.jianshu.action;

import java.io.IOException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;


import com.jianshu.service.SubjectService;
import com.jianshu.utils.Utils;

public class SubjectAction {
    @Autowired
    SubjectService subjectService;
    @Autowired
    Utils utils;
    List allSubject;
    Long classid;
    public Long getClassid() {
        return classid;
    }
    public void setClassid(Long classid) {
        this.classid = classid;
    }
    
    public List getAllSubject() {
        return allSubject;
    }
    public void setAllSubject(List allSubject) {
        this.allSubject = allSubject;
    }
    /**
     * 取出题目并填装到allSubject(List) 同时取出并组装成json
     * 
     * @return
     * @throws IOException
     */
    public void list() throws IOException {
        allSubject = subjectService.list(classid);
        utils.subjectJson(allSubject);
    }}

SubjectService.java

package com.jianshu.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.jianshu.dao.SubjectDAO;

public class SubjectService {
    @Autowired
    SubjectDAO subjectDAO;
    public List list(Long classid) {
        // TODO Auto-generated method stub
        return subjectDAO.findByclassid(classid);
    }

}

SubjectDAO.java

    /**
     * 根据classid查询该科目
     * @param classid
     * @return
     */
    public static final String CLASSID = "allclass.classid";
    public List findByclassid(Object classid) {
        return findByProperty(CLASSID, classid);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,877评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,058评论 19 139
  • 一. Java基础部分.................................................
    wy_sure阅读 9,289评论 0 11
  • 曾经无数次面对这样一个问题:“写诗究竟有什么用。”听到之后自己的反应也大抵是起初瞠目结舌,然后喃喃不能自知。几复揣...
    亚历山大奥古斯塔阅读 4,367评论 0 0
  • A——APTX-4869 看过柯南的都知道这是让柯南变小的药,是灰原还在组织的时候发明的,关于这个药还有一些未解之...
    Dorothy_4682阅读 5,095评论 0 6

友情链接更多精彩内容