`
yaya_wiscom
  • 浏览: 48184 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

写代码的一些经验积累(持续更新)

阅读更多

最近出差,有机会在现场看看别人写的一些代码,虽然比较基础感觉还是不错,所以干脆就记录下来。以备下次自己用的时候做个参考。

1、通常需要在Web项目中配置一个首页面作为跳转页面。


<welcome-file-list>
	<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

 在index.jsp中再跳转到登录页面


<%
	RequestDispatcher rd = request.getRequestDispatcher("login/login.jsp");
	rd.include(request, response);
%>

 这样配置后访问系统登录页面就不需要输入全部的url,只需要确定应用的名字就可以访问。

2、在LoginController中出错后一般是要重新跳转到登录页面,此时一般就是直接将跳转的路径名注入到LoginController中。


<property name="viewName" value="forward:login/login.jsp" />

 在LoginController中直接将注入的viewName作为视图名即可:


if (!checkCode(req, res)) {
	model.put("errorPrompt", "验证码错误!");
	return new ModelAndView(viewName, "model", model);
}

 如果将来跳转的路径修改了只需要修改配置文件一处就可以。

3、按钮事件不一定非要用Ajax请求,完全可以将按钮放到页面的某个form表单中。

例如:页面上存在一个id为queryForm的表单,通过修改其action属性值请求不同的Controller。


$("#queryForm").attr("action", "cache.html?method=clearLocalCache");
$("#queryForm").submit();

4、如果CSS不是你的强项,那么建议你使用jqueryUI一些已经做好的样式,这样既节省时间又能达到一个不错的效果。

目前系统中只见过使用jqueryUI的button和dialog组件,其他的组件日后慢慢研究。

5、页面中需要引入外部文件,请用以下路径的形式:


<%
	String requestURL = request.getRequestURL().toString();
	String requestURI = request.getRequestURI();
	String contextPath = request.getContextPath();
	String base = requestURL.substring(0,requestURL.indexOf(requestURI))
			+ contextPath;
%>
 <link rel="stylesheet" href="<%=base%>/css/cache/index.css" type="text/css">

 这样写在部署现场或是项目迁移的时候会避免很多麻烦事。

6、如何实现一个账号只能在一处登陆

创建一个CheckAuthController可以继承Spring中的MutiActionController。写一个校验的方法checkAuth(),在此方法中可以按照一定的业务规则判断用户是否存在多处登陆的情况,返回一个判断的结果。LoginController校验通过后的每一个Controller都继承于判断多处登录的CheckAuthController并调用其中的checkAuth()方法,如果返回值为true,存在多处登陆的情况则立即重定向到登录页面中去,否则进行相应的业务处理。

7、尽量的将显示页面和代码分离,一般JavaWeb项目采用JSP显示数据,可能的话多使用JSTL标签或是JS脚本代码进行数据的展示以及获取,或是自己封装一些标签用于视图层的显示。EL运算符:

类别 运算符
算术运算符 +-*/(或 div)和 %(或 mod
关系运算符 ==(或 eq)、!=(或 ne)、<(或 lt)、>(或 gt)、<=(或 le)和 >=(或 ge
逻辑运算符 &&(或 and)、||(或 or)和 !(或 not
验证运算符 empty

代码示例:

<c:if test="${not empty returnMap and returnMap.flag eq 'false'}">
   		${returnMap.message }
 </c:if>

8、不要忘记使用JSP容器内的四个不同作用域储存和检索数据。应该记得JSP容器的四个作用域,回顾一下:页面作用域(pageScope)、请求作用域(requestScope)、会话作用域(sessionScope)、应用程序作用域(applicationScope)。


9、去掉html中textarea和input的边框样式:

style='overflow:auto; background-attachment: fixed;background-repeat:no-repeat;border-style: solid; border-color: #FFFFFF'

input

style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px '

注:去掉textarea的下拉框overflow:hidden

10、控制表格行的长度。

方式一、使用div+css

<div style="width:100px;text-overflow:ellipsis;overflow: hidden;white-space:nowrap;">

     输入需要控制长度的文本,如果过常自动添加省略号。。。

<div>

方式二、使用jstl标签


<c:choose> 
<c:when test="${fn:length(maps['LYZT']) > 16}"> 
	<c:out value="${fn:substring(maps['LYZT'], 0, 16)}......" /> 
</c:when> 
<c:otherwise> 
	<c:out value="${maps['LYZT']}" /> 
</c:otherwise>
</c:choose>

 在使用JSTL的时候不要忘记引入标签库:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>



11、使用oracle自带函数进行字符串补位。

在数据库中针对字符串的补位操作可以使用lpad和rpad函数。例如学校上课周次默认在25周以内,在排课的时候我们可以使用1表示选中,0表示未选中,周次编号可以使用25个0表示,这样选中的周数和未选中的周数就可以通过01字符串来表示。

 SELECT lpad('1','25','0') FROM dual 

12、javascript去掉字符串中的HTML标签:

function delHtmlTag(str){
   return str.replace(/<[^>]+>/g,"");//去掉所有的html标记
}

13、Query页面查询防止刷新


attributesText="onsubmit='javascript:return false'"

14、脚本代码中产生Wid

var selectedWid = Epx.GUID();

15、关于oracle截取字符串的操作,今天在项目中遇到一个问题,平台的批量保存在视图模板下无法保存。没有找到原因,索性我自己写代码去保存。保存操作其实是一个更新,主要是记录修改记录的wid和修改后的值。如果传两个list到存储过程中进行遍历,那样效率不是很高。可以将wid和修改后的值拼接在一起用特殊字符$$进行分隔。这样我在存储过程中只需要遍历一次即可,在遍历出拼接的字符串后对字符串进行拆解。

 OPEN V_CUR FOR SELECT COLUMN_VALUE AS ZC FROM TABLE(CAST(TO_TABLE(in_wids) AS TAB_STR));
         LOOP
          FETCH V_CUR INTO V_WIDS;
          EXIT WHEN V_CUR%NOTFOUND;
               SELECT SUBSTR(V_WIDS, 0, INSTR(V_WIDS, '$', 1, 1) - 1),
                      SUBSTR(V_WIDS,
                             INSTR(V_WIDS, '$', -1, 1) + 1,
                             LENGTH(V_WIDS))
                 INTO V_WID, V_SCJLDM
                 FROM DUAL;
                
                 UPDATE T_BYSC_BYSCXSJG g SET g.scjldm = v_scjldm WHERE g.wid = v_wid;
          END LOOP;
        CLOSE V_CUR;
 这里需要记一下substr()和instr()这两个常用函数。简单的说substr用于截取字符串,具体注意一下它的参数,第一个参数表示需要处理的字符串,然后是截取字符串的开始位置,但是最后一个参数不要想当然的认为是截取字符串的结束位置,而是截取字符串的长度。不注意的话很容易给程序带来不易发现的bug;instr()函数的作用是返回要截取的字符串在源字符串中的位置,其中第一个参数表示源字符串,第二个参数表示目标字符,第三个参数表示从哪个位置开始查找,负数表示从右向左,最后一个参数表示目标字符出现的次数位置。

分享到:
评论

相关推荐

    Android代码-这里收集了大家常用的一些Android的模板代码

    这里收集了大家常用的一些Android代码,持续更新中,内容来自自己的平时积累和网络上看到的文章,部分原文地址在最下方。如有错误欢迎指正,如有侵权,请联系我删除。里面可能会有重复内容,请忽略或者提醒我删除。 ...

    JAVA 五年的工作经验和学习笔记

    这里需要说明的时,该文档是本人5年工作经验的积累,文档中大部分知识点来源于实际工作中的总结,(除了JAR等资源文件外)其代码都是可运行的,还有一部分知识来源于网络或者其他书籍,这里做一些收集,使该体系更加...

    购物商城系统源代码--036

    凭借时代网联信息科技有限公司长期积累的丰富的web开发及数据库经验和强于创新追求完美的设计理念,使得时代商城购物系统在很短时间内以其鲜明的个性特色从国内外同类产品中脱颖而出。经过了效率最优化和负载能力...

    安卓学习代码集合

    这是本人学习安卓过程中积累的代码,几乎涵盖所有的安卓控件,比较简单适合新手,我想重在学习思路和方法吧,也包含集中用过的特效实例,后期有新的特效还会持续更新。

    OneApiConnect C++ 统一PLC通讯接口源代码,支持MC、Fins等

    每家PLC厂商都有自己的通讯协议,三菱有MC、...我们在半导体行业深耕多年,积累大量的经验,实现功能的同时,也需要保证极其严格的稳定性,晶圆生成设备7*24小时不能出任何故障。 以下是我们的接口库下载以及源代码。

    Android代码-YCDialog

    博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……...

    重磅更新沪深A股上市公司常用数据整理(更新至2022年)方便匹配 提供整理代码

    提供基础数据包整理代码 2、数据包含 基础数据包: 资产负债表 利润表 现 金流量表(直接法) 现金流量表(间接法) 偿债能力(资产负债率、流动比率、速动比 率、利息保障倍数等) 披露财务指标(基本每股收益、...

    季度版A股上市公司常用财务数据整理(更新至2023年1季度)方便匹配 提供整理代码

    营业收入增长率、总资产增长率、净利润增长率、可持续增长率、资本积累率等) 每股指 标(每股收益、每股净资产、每股现金净流量、每股净资产等) 相对价值指标(托宾Q值 、账面市值比、市盈率、市净率等) 股利分配...

    twincat学习

    我们不排除后版本 软件仍然会持续升级和更新,我们不排除后版本 软件仍然会持续升级和更新,我们不排除后版本 软件仍然会持续升级和更新,我们不排除后版本 的操作界面会发生变化,而例程中代码也有可能不适用于后续...

    半天搭建你的Jenkins持续集成与自动化部署系统

    主要有以下几个原因:代码开源、插件丰富完善、系统稳定社区活跃,成功实践和网上资源较为丰富安装配置简单web形式的可视化的管理页面Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续...

    Android代码-sofa-bolt

    这些年我们在微服务与消息中间件在网络通信上解决过很多问题,积累了很多经验,并持续的进行着优化和完善,我们希望能把总结出的解决方案沉淀到 SOFABolt 这个基础组件里,让更多的使用网络通信的场景能够统一受益。...

    Agriculture_10Be_simulator:该代码生成一个视频,模拟Be-10在可耕土壤中的积累

    Agriculture_10Be_simulator 此MATLAB代码生成一个视频,模拟Be-10在可耕土壤中的积累模型演变该模型模拟Be-10在以50 mm / ka的恒定速率腐蚀的表面下的累积: 从t = 0到50 ka,轮廓的密度是恒定的从t = 50到100 ka,...

    计算机设计 - vb+access库存管理系统(LW+开题报告+源代码+目录) ,保证可靠运行,毕业生可参考,免费资源下载

    本项目旨在利用Visual Basic(VB)编程语言结合Microsoft Access数据库,开发一套高效、易用的库存管理系统。...同时,本项目的开发过程也锻炼了团队成员的编程能力和项目协作能力,为今后的项目开发积累了宝贵的经验。

    EOS6程序员教程配套案例源代码及SQL

    通过图形化的构件单元作为应用系统的基本组成元素,使应用系统可以快速高质量的搭建,建成的应用系统具有较强的可管理可维护能力,同时拥有最强的需求变化响应能力,并通过构件积累来持续积累软件知识财富。...

    基于Python的开源量化交易平台开发框架+源代码+文档说明

    VeighNa是一套基于Python的开源量化交易系统开发框架,在开源社区持续不断的贡献下一步步成长为多功能量化交易平台,自发布以来已经积累了众多来自金融机构或相关领域的用户,包括私募基金、证券公司、期货公司等。...

    4G+(VOLTE)实战经验VoLTE秘籍精品资料50个合集.zip

    4G+(VOLTE)实战经验VoLTE秘籍精品资料50个合集: LTE_VOLTE专题.pdf LTE语音解决方案--VOLTE调度机制的研究-5.24.pdf PDSCH功率-PaPb(精).pdf SEQ分析VOLTE实战操作指导书.pdf TD-LTE VoLTE语音质量(MOS)测试说明书....

    持续集成之“测试三角形与分段构建策略原则”

    对于一些历史“悠久”的遗留系统来说,甚至会积累数以万计的自动化测试用例。如果对这样的系统进行持续集成,还要求每个开发人员都要进行本地验证的话,困难的确不小。让我们还是看看Joe的团队是如何解决类似问题的...

    Android提示:Android中的摘要代码提示

    内容是我自己平时学习与工作积累的代码与规范,并没有什么原理剖析。如有错误欢迎指正,如有可能,请联系我删除。 尖端 TODO待更新 Android工具命名空间原来是有大用处的。 xml中的错误处理xml预览资源压缩 如果你...

    Visual Assist X 10.9.2341.0.rar

    近年来,逐渐开放的微软加快了 Visual Studio 的演进速度,持续地吸收了不少 VA 的特性,但多年的积累使得 VA 的对应实现仍有着很强的竞争力。就拿代码重构里最基本的“重命名”来说,VA Rename 就比 VS Rename 步骤...

    借助 RIPE Atlas 创建延迟和连接性测量的工具_Python_HTML_代码_相关文件_下载

    首先,您应该创建一个RIPE Atlas帐户并积累一些积分。 安装 有关安装步骤,请参阅 INSTALL.md。 RIPE 地图集功能 成熟的阿特拉斯限制: 不超过 100 次同时测量 每次测量最多可使用 1000 个探头 每天生成的结果不...

Global site tag (gtag.js) - Google Analytics