后端开发菜鸟日记-五

这周的任务,

第一个任务是120多字段的列表呈现,导入和导出,以及一个模糊搜索的实现,

第二个任务是在首页,用提供的接口,显示数量和代办连接,不需要做分页,因为没有超过十行。。

1.将工作表里面数据转换成对应对象列表返回

List<CommonImportMessage> messages = new ArrayList<CommonImportMessage>();
        List<TclAnalysis> dataList = new ArrayList<TclAnalysis>();
        int firstRowindex = sheet.getFirstRowNum();// 获取第一个实际行的下标
        int lastRowindex = sheet.getLastRowNum();// 获取最后一个实际行的下标
        int firstColindex = 0;
        int lastColindex = 0;
        String content = "";
        org.apache.poi.ss.usermodel.Row currentRow = null;
        TclAnalysis newanalysismain = null;
        // 因为行数第一行是空白的,要获取有内容的行,需要进行加一操作,双循环
        for (int startindex = firstRowindex + 1; startindex <= lastRowindex; startindex++) {
            newanalysismain = new TclAnalysis();
            currentRow = sheet.getRow(startindex);// 快速获取当前的行数的对象
            firstColindex = currentRow.getFirstCellNum();
            // 获取在某行第一个单元格的下标
            lastColindex = currentRow.getLastCellNum();
            for (int colindex = firstColindex; colindex < lastColindex; colindex++) {
                org.apache.poi.ss.usermodel.Cell currentCell = currentRow.getCell(colindex);
                content = getCellValue(currentCell, true);
                if (colindex == 0) {
                    java.lang.reflect.Method method = newanalysismain.getClass().getDeclaredMethod("setName",
                            String.class);
                    method.invoke(newanalysismain, content.trim());
                } else if (colindex == 1) {

                } else if (colindex == 120) {

                } else {
                    java.lang.reflect.Method method = newanalysismain.getClass().getMethod("setName" + colindex, String.class);
                    method.invoke(newanalysismain, content.trim());
                }
            }
            dataList.add(newanalysismain);
        }
        messages = SaveData(dataList);
        return messages;

其中用到了反射去给方法设值。。

2.在首页,用提供的接口,显示数量和代办连接

  接口是对方提供的,调用接口就可以获取到数量和链接。但是这里在一开始的时候,我们应该会先去想到是否需要分页这个问题,在数据展示的时候,是否分页是必须要考虑的。(先获取配置项,在写一个StringBuffer)去把后面的接上,这种写法,我觉得很好,可以学习。

            TclConfig tclConfig = tclConfigService.getTclConfigByKey("FSSC_TODO_URL");
            String urlStr = tclConfig.getFdStr03() + fsscTodoUrl;
            JSONObject jsonObject2 = new JSONObject();
            jsonObject2.put("userName", userId);
            jsonObject2.put("language", "zh_CN");
            jsonObject2.put("pageIndex", pageNo);
            jsonObject2.put("pageSize", pageSize);
            urlStr = urlStr.replace("#DATA#", jsonObject2.toString());
            url = new URL(urlStr);
            HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
            BufferedReader reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8"));
            String line;
            StringBuffer buffer = new StringBuffer();
            while ((line = reader.readLine()) != null) {
                buffer.append(line);
            }

        这是得到值,然后我再理一理跳转的过程。先页面获取客户端的请求,由Struts来控制前后端之间的值的传递和页面之间的选择,先调用ACTION方法,去返回一个MAP,在根据MAP的值,去获得要跳转到哪一个页面。是如何根据MAP的值去获取的呢??后面自己来回答      
        <action path="/sys/notify/sys_notify_todo/sysNotifyTodoFinancial" 
                type="com.landray.kmss.sys.notify.actions.SysNotifyTodoFinancialAction" 
                parameter="method" 
                input="edit"
                unknown="false"
                validate="true"
                scope="request">

对于它的参数,解释如下:

            //这里的method方法可以被取代的,是由下面的来取代,从而跳转

            //validate="true" 是指的要校验吧 要经过校验方法才会继续往下执行的 不会直接进去execute

           //在Action映射配置中,Scope属性可以取值为:request或session。Scope属性表示:Struts框架在将     ActionForm对象(与目标Action匹配的ActionForm)传送到Action之前,会将ActionForm对象保存的位置,指的是作用域的范围。。

           // input指定formbean的数据是由哪个页面提供的。 说明:提供此属性的目的在于formbean校验失败时,程序方便跳回formbean的输入页面,通过struts1错误信息标签,显示校验失败信息。 

           //如果action把该属性设置为true,则它可以处理客户机发出的所有无效的.do请求,默认值为false。 
            <forward name="fssc-todo" path="/sys/notify/sys_notify_financial/sysNotifyTodo_financial.jsp" />
        </action>

下面是对Struts的一些介绍,因为自己不是很熟悉

       没有struts之前,使用servlet,最常用的是 doGet,doPost,service方法,如果有些经验的程序员会合理的使用这三个方法:如在用户发出get的请求时,将用户请求在doGet方法中处理,用户发出post请求时,将用户的请求用doPost请求处理,必要时加上service方法去处理那些在一个servlet中必须执行的请求,用户的请求大体也就这三类,但是如果细分,一个“编辑”,“删除”,“查看”等操作都是doGet的范围,当然也可以都写到serice方法中或 doPost中处理,这样为了区分这些请求,我们通常都要在程序中加入一个判断的参数,如:operate,然后在程序中判断 if operate.equals("update")....,if operate.equals("del")....,if operate.equals("view")....等,实际上这只是个简单的逻辑,如果业务更加复杂,你可能写更多的类时operate的参数,这样就造成程序中有若干if..else if...else if ..,即便你有非常好的编码规范,整齐的缩进,这个程序也相当难维护;而用到struts时,你又可能把这些参数都写到execute方法中;那么最好的方法还是将这些逻辑分开处理,如果执行“编辑”操作的时候调用“编辑”对应的方法,执行“删除”的时候调用“删除”对应的方法...将是比较理想的结果,为了实现这个应用要求,struts引入许多类型的工具类,如:MappingDispathAction,LookDispachAction,DispatchAction,以满足不同要求的需要,这样你在struts-config.xml文件的action元素中增加 parameter属性即可实现这个功能。 

 

最后就是前端的展示了,前端要用的就是标签和一个模块技术。将这个功能加到那个模块中,在把模块加到首页里面去。从而完成,前端的总结,后面会补上。。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值