新手程序员 工作日志 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">

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

 

原文地址:https://www.cnblogs.com/dushutai/p/6794780.html