在数据中,一般情况下,我们都会使用,preStatement 来传输sql语句,然后通过pstm.setString(index,str)或者其他类型来设置占位符?的具体值。因为安全问题,我们已经体验到了这种设计思路的好处。而在今天的学习中,发现了基于这种占位符思路的另外一个应用。
如果我们现在要用到一个长字符串,这个字符串中,大部分内容是相同的,只有少部分内容要根据不同的条件进行更改,当然,我们可以把整个字符串拆开,然后使用字符串拼接的方式为这个字符串赋值。
这种方法,虽然可行,但是,若我我对字符串的要求改变,那么我对字符串要进行不同的分割,要增设或者删除一些用来保存中间需要特殊处理的字符串变量strTemp,虽然可行,但是没有可重用性。
于是,另外一种方法应运而生:
String pattern = "<a href={0}?page={1}>上一页</a>";
for (int i = 1; i <=this.getTotalPages(); i++) {
pattern+="<a style='color:red;' href={0}?page="+i+">"+i+"</a>";
}
pattern+= "<a href={0}?page={2}>下一页</a>";
String url = MessageFormat.format(pattern, new Object[] {
"productServlet", prePage, nextPage });
使用{index}进行占位处理,用MessageFormat.format(str,args);对占位符进行赋值,其中str表示需要替换内容的string,args装的内容是将按照顺序替换占位符的具体东西。
这种方式,具有较高的可重用性,也让我瞥见了编程语言超越形式的一些统一,此处略作记载以做纪念。(请无视我的小装b)