• 新手程序员 工作日志 2017.5.2.


    今天真是开始总结一下 这20 天我做的一个任务 说实话 功能实现了 呃呃 人家不让更新提交 我去 我就次到这种境界吗

    1.任务概述

    任务要求 我在我的题库界面的删除按钮旁边增加一个修改试题 按钮 点击该按钮、进入相应试题并完成试题的修改

     解析 : 这是一个非常常见的有需要一定基础的功能实现任务 在此 我为大家讲下这类问题的思路以及我的解决过程 因为每个公司的编程规则习惯不一样 所以跟我遇到

    一样难题的兄弟们 我只能告诉大家一个具体实现的思路 具体的一些问题 还得各自公司的老手们

    下面 废话不多说 开始

    ----------------------------------------------------------------------------------------------------------------------------

    1 首先修改试题的这个按钮分为 2 个程序 

         1 . 点击该按钮 跳转界面 触发 查询 回显,将数据库的信息 返回到相应的页面上

        2. 修改完试题后 点击页面的保存按钮 数据保存到相应试题完成试题的 修改

    ---------------------------------------------------------------------------------------------

    1 从第一个小功能开始 点击相应试题 实现页面的跳转 并触发查询

     html += '<a class="btn btn-primary btn-xs" name ="query" href="'+_ctx+'/theme/update.action?theme_id='+theme.theme_id+'&subject_id='+_subject_id+'">修改试题</a>';

     上面的这段程序 就是点击相应按钮是 按钮的程序代码

    可见上面是一个 拼装的html 的方法求编辑一个 jsp 页面 这是一个点击这个  <href>会触发 update动作 (这个update是我后期在action 集 中自己写的 及struts层 )

    然后 ?theme_id='+theme.theme_id+'&subject_id='+_subject_id+' 这句话的意思是可以理解为将这道题的 试题 ID 以及 学科id 带入到action中相应的动作事件中

    (这是我们公司项目的设定的 必须 试题id和 学科id 进行双定位查询 一般都是单个的id ) 这里的事update。jsp文件意思是将该试题的id 号显示并标记 。

     以上这个就是我所说的 action集 既是struts 层的  这里点击链接 触发的就是我所画圈的 这个 该函数的功能就是实现页面的跳转 因为一般来说 页面的跳转都是有struts层去控制的   当然这还不算完

    触发该函数后还会触发 struts。xml文件 该文件代码 如下

    该文件就是关于页面跳转的路径问题 如画的所示  如果themeaction返回的是update 的话 则会在这里进行页面的跳转 。

    以上就是页面跳转功能的实现 。

     --------------------------------------------------------------------------------------------------------------------------------------------------------

    2 触发查询 的写法

    首先 我们公司的项目 是以 action 既是上面所说的东西 完成页面的跳转的

    而 Ajax 去实现数据的传输 

    所以在查询时 就体现出Ajax的重要性了  

    代码如下

        var getTheme = function() {                                              我在这里解释一下这个代码 给新手的讲讲   当跳转到相应的试题修改的界面 会有
            $.ajax({
                url : _ctx +"/theme/getTheme.action",                                   jQuery(document).ready(function(){                                                              
                type : 'get',                                                                                    Update.init();
                dataType:'json',                                                                         });
                data : {
                    theme_id : _theme_id,                                                 这里是说当页面加载后 会自动执行  Update.init();函数   这个函数里就有这个
                    subject_id : _subject_id                                                   Ajax               type指的是 get 就是获取信息
                },                                                                                                     data 指的是将theme-id 和 subject-id 传到后台
                success : function(data) {                                                                     如果后台返回 success 的话 将执行success的函数 否则执行error的                                                                                                                       函数程序 。                                                
                    if(data.code == '+1000') {//成功                                                这里的data 指的是从后台查询到的数据 返回的结果集 。
                      var theme = data.body;

        ...................................................

        ....................................................

           }else if(data.code == '-1000'){//失败
                    }
                },
                error : function(data) {
                    Modal.warning('提示','信息查询失败!');
                }
            });
        };

    这写代码就是实现查询功能的 js 文件的 代码 当然这不完全 。........................这些地方省略的事 页面回显的 功能一般页面回显是 JQ实现的 简单有效 建议都去看看 很重要的 前端技术  待会我会细讲回显的问题 这里先把查询讲了 。

        在Ajax将数据传到了themeaction 后才能再传到后台 

     这便是themeACtion中查询的 Ajax将theme_id 和subject_id 传到这里 后进行判断 如果2者都存在 则 新建结果集

                                       通过id去查找 试题 返回该实体的结果集 (你可能不明白 确实 这里应该在themeService处深入)

    在themeService深入的话 进行 观察会发现

     这时ctrl+左键就会 看是去service (既是spring层 )

    进入了 业务层的接口 里面的 public ThemeVO getThemeById(int subject_id, long theme_id);的 getThemeById功能函数 去执行这个功能函数

    参数有 subject_id, 和 theme_id

     -----------------------------------------------------然后在这里进入 service 的实现层

    如下

    这里是service的实现层  在这里 利用 theme.setThemetablename(SystemUtil.getThemeTableName(subjectId));

    通过SystemUtil.getThemeTableName(subjectId) 的方法 去获取表名   这里是先通过学科的id进行查找

    将 要查的试题所在的学科找到 然后 在这个学科的表里 通过 Dao层的 getThemeById 去查找该实体 返回到service 后返回到 action 。返回的是themeVO 结果集 。

    下面是 Dao层

    然后通过dao层的

    的 实现类 去看

    然后进行数据的操作 

    在 xml.文件里

    然后完成以此向上 一个接着一个的返回查询到的结果集 。查询到此结束 。

    2****************************************************************************************

    将查询到的结果集进行回显

    这里推荐的用到 JQ 说实话 前端必备

    具体回显的代码如下

    关于上面的代码解释是  新建一个集合 吧、nandu 将 id是difficulty的<div>下的<a>标签 作为这个集合的元素

    each 是遍历查询 是将nandu 进行遍历  如果其中的元素  的 val 的值 等于返回结果集中的 theme.difficulty则 将 class属性内的值 改为 "btn btn-sm btn-success"

    prev() 是将之前的 <a>标签的值改为 default

    siblings()是将之后<a>标签的值改为 default

    你们可能看不懂 给你们看下 jsp 页面就明白了

       <div class="form-group">
                         <label for="" class="col-md-1 control-label">年级:</label>
                         <div name="grade_area" class="col-md-11" id="grade_area">
                             <a href="javascript:void(0);" val="12" class="btn btn-sm btn-success">高三</a>
                             <a href="javascript:void(0);" val="11" class="btn btn-sm btn-default">高二</a>
                             <a href="javascript:void(0);" val="10" class="btn btn-sm btn-default">高一</a>
                             <a href="javascript:void(0);" val="9" class="btn btn-sm btn-default">初三</a>
                             <a href="javascript:void(0);" val="8" class="btn btn-sm btn-default">初二</a>
                             <a href="javascript:void(0);" val="7" class="btn btn-sm btn-default">初一</a>
                             <a href="javascript:void(0);" val="6" class="btn btn-sm btn-default">六年级</a>
                             <a href="javascript:void(0);" val="5" class="btn btn-sm btn-default">五年级</a>
                             <a href="javascript:void(0);" val="4" class="btn btn-sm btn-default">四年级</a>
                             <a href="javascript:void(0);" val="3" class="btn btn-sm btn-default">三年级</a>
                             <a href="javascript:void(0);" val="2" class="btn btn-sm btn-default">二年级</a>
                             <a href="javascript:void(0);" val="1" class="btn btn-sm btn-default">一年级</a>
                         </div>
                         <input type="hidden" name="grade" value="12">

    这是讲信息返回到 网页的 编辑器 插件中

     

  • 相关阅读:
    +1和*2
    线段树(区间最大值和最大值的个数)
    CodeForces
    莫队算法入门(暴力而不失优雅)
    二分迷宫
    全错排公式
    C++ PAT乙 1051. 复数乘法 (15)
    C++ PAT乙 1070. 结绳(25)
    C++ PAT乙 1080. MOOC期终成绩 (25)
    C++ PAT 1073. 多选题常见计分法(20)
  • 原文地址:https://www.cnblogs.com/dushutai/p/6794780.html
Copyright © 2020-2023  润新知