`
yaya_wiscom
  • 浏览: 49240 次
  • 性别: 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()函数的作用是返回要截取的字符串在源字符串中的位置,其中第一个参数表示源字符串,第二个参数表示目标字符,第三个参数表示从哪个位置开始查找,负数表示从右向左,最后一个参数表示目标字符出现的次数位置。

分享到:
评论

相关推荐

    好的程序员如何写代码

    9. **持续进步**:好的程序员有成为更好的自己的决心,不断学习和实践,他们的代码随着经验积累而不断提升。 10. **面试和招聘**:评估程序员能力不应仅依赖于基础理论和面试,而应包括实际编程和重构任务,以更...

    Mtk学习工程中的经验积累

    以下是对"MTK学习工程中的经验积累"这一主题的详细解读: MTK学习的基础首先在于理解其芯片架构。MTK芯片集成了处理器、GPU、通信模块等多种功能,了解这些模块的工作原理是深入学习的基础。例如,ARM处理器架构的...

    写过的一些代码,记录一下

    在IT行业中,编程是至关重要的技能,而"写过的一些代码,记录一下"这个标题恰好体现了程序员们在项目开发过程中积累经验、整理思路的习惯。QML(Qt Meta Language)和Qt是两个与这个主题密切相关的技术,它们在构建...

    如何写代码

    根据给定文件的信息来看,这份材料实际上并未围绕“如何写代码”这一主题展开论述,而是提供了关于担任校园主管角色的一些指导建议与实践经验分享。鉴于此,以下将基于这些信息提炼出与IT行业或编程领域不相关的校园...

    每天写出好代码的5个建议

    ### 每天写出好代码的5个建议 在软件开发领域,编写高质量的代码是每个程序员追求的目标。良好的代码不仅能够提高程序的稳定性和可维护性,还能够提升团队的协作效率。以下是从给定文件中提炼出的五个关于如何每天...

    NET开发经验文档积累汇总

    1. **项目管理**:版本控制(如Git)、持续集成/持续部署(CI/CD)、代码审查流程等在实际项目中的应用。 2. **性能调优**:针对特定场景的性能瓶颈分析和解决策略,如数据库查询优化、UI响应提升等。 3. **架构...

    一些经典的代码和算法

    下面,我们将深入探讨这两个主题,并基于标题"一些经典的代码和算法"以及描述中的信息来展开讨论。 首先,让我们来理解什么是代码。代码,简单来说,就是程序员用特定编程语言编写的指令集合,这些指令告诉计算机...

    代码人生,不止代码

    首先,书中的"不止代码"理念提醒我们,技能的积累并非一成不变。编写代码只是程序员工作的一部分,理解业务逻辑、优化算法、协作沟通、项目管理等都是程序员需要掌握的重要技能。我们要学会跳出代码本身,去理解代码...

    如何更好的学习写代码

    ### 如何更好地学习写代码 #### 一、面对编译错误和挑战时的应对策略 在编程学习过程中,经常会遇到的一大挑战就是面对大量的编译错误。这种情况通常是因为对语法不够熟悉所导致的。这时,我们需要有足够的耐心和...

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

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

    如何避免脆弱的代码

    ThoughtWorks公司在过去十年中积累了丰富的经验,在处理大规模代码库时也遇到过不少挑战。本文旨在分享我们在实践中学到的一些宝贵教训,帮助其他开发者和团队避免代码脆弱性带来的问题。 #### 二、更新依赖库的...

    查找Xcode无用代码

    持续集成(CI/CD)流程可以在每次提交时自动运行代码检查,这样可以及时发现并处理无用代码。团队间良好的代码审查实践也可以防止无用代码的积累。 总结来说,查找Xcode无用代码是一个多步骤的过程,涉及了Xcode的...

    基于微信小程序开发的同学录小程序源代码,面向毕业后在某城市工作的校友,给大家构建一个充分交流的平台,自己的人生道路积累持续的人脉

    基于微信小程序开发的同学录小程序源代码,面向毕业后在某城市工作的校友,给大家构建一个充分交流的平台,自己的人生道路积累持续的人脉 特点 无广告:本项目希望通过微信小程序,构建一款无广告,真实可靠的毕业...

    源码追踪经验谈(侯俊杰谈如何读代码)

    通过参与开源项目,阅读和分析各种代码库,我们可以不断积累经验,逐步提升自己的源码阅读技巧。侯俊杰的经验谈可能包含许多实际案例,这些案例可以帮助我们把这些理论知识应用到实际问题中。 总的来说,侯俊杰的...

    使用Keil C调试某系统时积累的一些经验

    在使用Keil C进行系统调试时,我们经常会遇到各种挑战,但通过不断实践与学习,可以积累许多宝贵的经验。以下是一些关键知识点和技巧,旨在帮助熟悉或正在使用Keil C调试工具的开发者提高效率。 1. **设置调试环境*...

    每天写出好代码的5个建议04

    根据给定的文件信息,可以看出文章的主题是关于“每天写出好代码”的建议。然而,提供的部分内容似乎包含了乱码或者是非中文字符,导致无法直接从中提取有意义的信息。因此,本篇文章将依据标题和描述来展开“每天写...

    java持续集成 持续集成

    Java持续集成是软件开发过程中的一个关键实践,它旨在频繁地合并开发人员的代码更改,以便尽早发现并解决潜在的问题。这个过程通过自动化构建、测试和部署,确保代码的质量和项目的稳定性。持续集成(Continuous ...

    如何提高代码质量(管理篇):代码复查

    10. **多元化参与**:鼓励团队成员相互进行代码复查,不同视角和经验可以帮助发现更多问题。同时,这也有利于团队间的知识共享和技能提升。 综上所述,代码复查是提高代码质量的有效方法。结合源码管理和工具,我们...

    怎样看待大学期间的代码练习

    代码量的积累确实能够反映出程序员在不同阶段的成长,但这并不意味着简单的数量叠加。真正的提升在于理解、实践和反思。 首先,编程初学者在编写100行代码时,通常会对编程有初步的理解,开始形成基本的编程思维。...

Global site tag (gtag.js) - Google Analytics