• echarts+jquery+ajax+struts2实现数据库数据加载


    我这个人是个死脑筋,说实话,因为一项技术,耽误了我很长时间,甚至停止了学习!!!!算了,不说了,还是决定一步一步来!!!

    今天要讲的内容是,实现数据库连接后,将数据由struts2到jsp页面实现echarts和后台交换的过程。

    第一步:建立数据库连接这些,咱就略了直接开始,数据库映射类和dao类实现。

    1.Score类:

    package bean;

    public class Score {
    private String student;
    private String chinses;
    private String math;
    private String art;
    /**
    * @return the student
    */
    public String getStudent() {
    return student;
    }
    /**
    * @param student the student to set
    */
    public void setStudent(String student) {
    this.student = student;
    }
    /**
    * @return the chinses
    */
    public String getChinses() {
    return chinses;
    }
    /**
    * @param chinses the chinses to set
    */
    public void setChinses(String chinses) {
    this.chinses = chinses;
    }
    /**
    * @return the math
    */
    public String getMath() {
    return math;
    }
    /**
    * @param math the math to set
    */
    public void setMath(String math) {
    this.math = math;
    }
    /**
    * @return the art
    */
    public String getArt() {
    return art;
    }
    /**
    * @param art the art to set
    */
    public void setArt(String art) {
    this.art = art;
    }
    }

    2.ScoreDao类:

    //计算各科平均成绩,然后放到list中

    public class ScoreDao {

    Connection connection = ConnectDB.getConnectDB();
    List<Score> list = new ArrayList<Score>();

    public List<Score> getAverageScoreList(){
    //将所有的成绩列出来的查询,查询数学计算平均分、语文、艺术的平均成绩
    String sql = "select avg(math) math,avg(chinese) chinese,avg(art) art from score;";
    try {
    PreparedStatement statement = connection.prepareStatement(sql);
    ResultSet set = statement.executeQuery();
    while (set.next()) {
    Score score = new Score();
    String chinese = set.getString("chinese");
    String math = set.getString("math");
    String art = set.getString("art");
    score.setMath(math);
    score.setArt(art);
    score.setChinses(chinese);
    list.add(score);
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return list;
    }

    }

    第二步:写struts2类EChartsAction和配置文件:

    1.EChartsAction类:

    package action;

    import java.util.List;

    import bean.Score;

    import com.opensymphony.xwork2.ActionSupport;

    import dao.ScoreDao;

    public class EChartsAction extends ActionSupport{
    /**
    *
    */
    private static final long serialVersionUID = 1L;
    private String chinese;
    private String art;
    private String math;
    //dao类进行数据库操作,将数据存储于Score类,在这里则调用
    //1.获取平均分数,实现
    ScoreDao dao = new ScoreDao();
    /**
    * @return the math
    */
    public String getMath() {
    return math;
    }

    /**
    * @param math the math to set
    */
    public void setMath(String math) {
    this.math = math;
    }

    /**
    * @return the art
    */
    public String getArt() {
    return art;
    }

    /**
    * @param art the art to set
    */
    public void setArt(String art) {
    this.art = art;
    }

    /**
    * @return the chinese
    */
    public String getChinese() {
    return chinese;
    }

    /**
    * @param chinese the chinese to set
    */
    public void setChinese(String chinese) {
    this.chinese = chinese;
    }

    //查询平均分
    @SuppressWarnings("unused")
    public String select(){
    List<Score> scores = dao.getAverageScoreList();
    for (int i = 0; i < scores.size(); i++) {
    //方法1
    Score score = scores.get(i);
    setChinese( score.getChinses());
    setArt(score.getArt());
    setMath(score.getMath());
    }
    if (scores!=null) {
    return "avg";
    }else {
    return "err";
    }
    }

    @Override
    public String execute() throws Exception {
    // TODO Auto-generated method stub

    return select();
    }
    }

    2.配置文件struts.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    <package name="webface" extends="struts-default">
    <!-- 查询数据库study,计算平均分,然后传到jsp -->
    <action name="ajax" class="action.EChartsAction">
    <result name="avg">/echarts/tiaoxing.jsp</result>
    <result name="err">/echarts/err.jsp</result>
    </action>
    </package>
    </struts>

    第三步:在jsp页面实现echarts以及实现交互:

    1.建立页面tiaoxing.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>echarts前后台数据</title>
    <script src="./echarts.js"></script>
    <script src="../jquery.min.js"></script>
    </head>
    <body>

    通过数组对数据进行加载。。。。。(后续的应该使用ajax与java实现后台数据加载)

    <div id="main" style=" 800px;height: 500px;">您的浏览器不支持,请更换</div>

    <script type="text/javascript">
    //初始化echarts
    var myecharts = echarts.init(document.getElementById('main'));
    //画柱状图
    var xdata=new Array();
    var ydata=new Array(<%=request.getAttribute("chinese")%>,<%=request.getAttribute("math")%>,<%=request.getAttribute("art")%>);
    xdata[0]="语文";
    xdata[1]="数学";
    xdata[2]="艺术";
    var option ={
    title:{
    text:'echarts入门',
    link:'http://www.baidu.com',//主标题超链接
    target:'blank',//主标题超链接打开方式
    textStyle:{ //设置主标题风格
    Color:'green',//设置主标题字体颜色
    fontStyle:'',//主标题文字风格

    },
    subtext:'副标题',
    sublink:'http://www.baidu.com',//副标题超链接
    subtarget:'blank',//副标题超链接打开方式
    padding:[5,10,5,5],//设置标题内边距,上,右,下,左
    itemGap:10,//主副标题之间的间距

    /*left:'left',//组件的位置,center,left,right
    top:'top',//组件离上边的距离middle,top,bottom*/ //此二者的优先级高于x吗?答案:是
    x:'center',
    backgroundColor:'white',//标题背景色
    borderColor:'gray',//标题边框颜色
    borderWidth:5,//标签线框
    borderRadius:5,//边框切圆角
    shadowBlur:10,//图形阴影模糊大小,该属性配合 shadowColor,shadowOffsetX(阴影水平方向上的偏移距离), shadowOffsetY(阴影垂直方向上的偏移距离。) 一起设置图形的阴影效果。
    shadowColor:'rgba(0,0,0,0.5)'//阴影颜色
    },
    tooltip:{},
    legend:{//图例组件
    type:'',//默认情况下,'plain':普通图例。缺省就是普通图例。'scroll':可滚动翻页的图例。当图例数量较多时可以使用。
    data:'班级平均成绩'//
    },
    xAxis:{
    data:xdata
    },
    yAxis:{},
    series:[{
    name:'班级平均成绩',
    type:'bar',
    data:ydata
    }]
    };
    myecharts.setOption(option);

    </script>

    <form action="ajax">
    <input type="submit" value="获取数据">
    </form>
    ${math}
    </body>
    </html>

    2.建立页面err.jsp

    写入一个提示就行。

    总结:原理就是利用javabean接收来自数据库的数据(映射类),然后dao类将数据查询出来放到映射类,最后action(将映射类的值存入struts2类的set方法)存,而jsp在使用的时候,实际上是取struts2的action类get方法返回的值。由于js代码是直接写在jsp中,所以可以使用<%%>来取值放入js中。

    额,感觉我自己都描述晕了。意思就是:

    mysql->dao->javabean->dao->struts2->jsp->js

    关键:

    其实关键就是struts2将值传到jsp,然后jsp到js过程。

    set和get方法,使得jsp页面可以通过request.getAttribute("math")方法获得对应的值。

    然后在jsp页面中,js就可以直接使用。

    效果:

    1.访问页面tiaoxing.jsp效果:

    2.点击获取数据或者直接访问ajax:

    关于图2,为啥直接访问ajax也能获取到数据,是因为当访问ajax时,获取了数据,然后就显示了。而访问tiaoxing.jsp是因为没有请求数据的这个过程,数据就无法获取。我的理解就是,一个直接跑去喝水,而另一个则是要由人拿来才喝。

  • 相关阅读:
    命令创建.net core3.0 web应用详解(超详细教程)
    安装Visual Studio Code并汉化
    Visual Studio2019及.NET CORE3.0的安装教程
    序列化对象设置字段首字母小写(驼峰命名法)
    解决锁定图层后不能淡显的问题
    C#中的委托和事件
    C#常用方法——委托和事件详解
    C#常用方法——List<T>泛型列表解析
    C#常用方法——strng.Format()和$用法详解
    C#常用方法——通过WebServices接口读取json字符并解析示例
  • 原文地址:https://www.cnblogs.com/ciscolee/p/9415996.html
Copyright © 2020-2023  润新知