如果某一段时间一直在用一种语言,会觉得很多语法简直太基础了,不值得一提,可是如果记录不好,过上一段时间,使用习惯了另外一种语言,回头再用的时候,发现有些idiot,为解决这种问题,这里会记录常用到的java代码,以达到“抽起来,也扛起来”的效果。
1、final关键字,终止继承,防止被修改:
private final static String beanConfigFile ="beans-config.xml";
Document doc= new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream(beanConfigFile));
2、转发:
request.getRequestDispatcher("/jstl_el.jsp").forward(request, response);
3、重定向:
response.sendRedirect(request.getContextPath()+"/servlet/item/SearchItemServlet");
4、Class映射类:
Object service =Class.forName(className).newInstance();
5、获取bin目录相关:
BeanFactory beanFactory = (BeanFactory)this.getServletConfig().getServletContext().getAttribute("beanFactory");
File uploadPath = new File(getServletContext().getRealPath("upload"));
Document doc= new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream
6、dom4j根据属性值读取xml节点:
Element beanElt=(Element)doc.selectSingleNode("//service[@id=\""+c.getName()+"\"]");
Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
8、dom4j读取xml文件到Document对象:
SAXReader reader = new SAXReader();
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");
Document doc = reader.read(in);
9、java dom4j读取某个节点下的子节点集合:selectNodes()
List daoFactorylist = doc.selectNodes("/config/dao-factory/*");
for (int i=0; i<daoFactorylist.size(); i++) {
Element daoFactoryElt = (Element)daoFactorylist.get(i);
String tagName = daoFactoryElt.getName();
String tagText = daoFactoryElt.getText();
System.out.println("读取DaoFactory-->>" + tagText);
//放入到Map中
daoFactoryMap.put(tagName, tagText);
}
hello(EL表达式框架语言):${hello}
hello(jsp脚本):<%=request.getAttribute("hello") %>
12、EL自定义指向,从servlet请求数据:
hello(EL表达式框架语言,自定义指向):${requestScope.hello}
13、EL与对象结构:无需引入包
对象都需要有get方法,在jsp中获取数据的时候,直接使用get后面的那一部分,不区分大小写。
14、类实现接口,又拥有自己的属性:
List list = new ArrayList()
ArrayList继承并实现了List接口,这里的list不可以使用ArraList的属性和方法,可以使用下面的声明使用:ArrayList list=new ArrayList();
List是一个接口,描述了一个有序的允许有重复值得集合,ArrayList 是List接口的一个实现,其内部使用数组实现,相似的还有LinkedList, 内部使用链表实现 。
15、ThreadLocal:Servlet单实例多线程,通过ThreadLocal保证每一个线程使用同一个Connection对象,保证了事务。
18、web层和servlet打交道,通过servletContext进行关联,如,从这里取工厂,不关心工厂使用什么方式创建,所以,不用工厂单例的getInstance方法
16、getAttribute和getParameter的区别:
getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型;
getParameter表示接收参数,参数为页面提交的参数,包括:表单提交的参数、URL重写(就是xxx?id=1中的id)传的参数等,因此这个并没有setParameter方法,而且接收参数返回的不是Object,而是String类型。
17、String.valueOf:
vouNo=String.valueOf(rs.getLong(1)+1);
18、Date处理:parse和format
dBeginDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(beginDate + " 00:00:00");
fiscalYearPeriod.setEndDate(new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("endDate")));
<%= new SimpleDateFormat("yyyyMMdd").format(fiscalYearPeriod.getBeginDate()) %>
19、this.getServletContext()和this.getServletConfig():
this.getServletContext()获取全局变量相当于Application级别的变量;this.getServletConfig()是与url相关的函数。
20、动态包含和静态包含:
动态包含:
生成多个类,好处:命名不怕重复;坏处,类太多,不容易维护。
语法:
<jsp:include page="/footer.jsp"></jsp:include>
静态包含:
只生成一个类,好处:只生成一个类,容易维护;缺点:命名容易重复。
语法:
<%@ include file="/header.jsp" %>
21、Listener的初始化要比ServletContext的init方法还要早。
22、对目标异常的包装:
if (e instanceof InvocationTargetException) {
InvocationTargetException ete = (InvocationTargetException)e;
throw ete.getTargetException();
}
23、关于session:
jsp的默认session=true,会自动创建session,且Session只会创建一次,除非浏览器关闭;Html静态页面不会自动创建session,这涉及到网站访问的时候,如果要在html中取得Session,那么就不能使用html,可以使用Ajax,从后台取得数据后,返回给Html页面。
24、java遍历Map:
Map<String, Integer> map = statReportManager.getClientLevelCount();
for (Iterator<Map.Entry<String, Integer>> iter=map.entrySet().iterator(); iter.hasNext();) {
Map.Entry<String, Integer> entry = iter.next();
dataset.setValue(entry.getKey(), entry.getValue());
}
25、request.getSession(true):默认是true,当前session不可用时,那么它就会创建一个新的会话。
request.getSession(false):如果会话不存在的时候,就会返回null。
26、filter对权限的控制:session和url跳转。
通过filter控制某个用户权限内的界面显示;防止手动输入url访问资源。
总结:
这里总结的是java中最常用的一些基本代码,平时遇到的时候就记录下来,过一段时间后回顾一下,是一个基本功的积累。