代码

Dom4J解析XML
1 //一.Document对象相关
2  //1.读取XML文件,获得document对象.
3  SAXReader reader = new SAXReader();
4 Document document = reader.read(new File("input.xml"));
5  //2.解析XML形式的文本,得到document对象.
6  String text = "<members></members>";
7 Document document = DocumentHelper.parseText(text);
8  //3.主动创建document对象.
9  Document document = DocumentHelper.createDocument();
10 Element root = document.addElement("members");// 创建根节点
11  //二.节点相关
12  //1.获取文档的根节点.
13 Element rootElm = document.getRootElement();
14 //2.取得某节点的单个子节点.
15 Element memberElm=root.element("member");// "member"是节点名
16 //3.取得节点的文字
17 String text=memberElm.getText();
18 //也可以用:
19 String text=root.elementText("name");这个是取得根节点下的name字节点的文字.
20 //4.取得某节点下名为"member"的所有字节点并进行遍历.
21 List nodes = rootElm.elements("member");
22 for (Iterator it = nodes.iterator(); it.hasNext();) {
23 Element elm = (Element) it.next();
24 // do something
25 }
26 //5.对某节点下的所有子节点进行遍历.
27 for(Iterator it=root.elementIterator();it.hasNext();){
28 Element element = (Element) it.next();
29 // do something
30 }
31 //6.在某节点下添加子节点.
32 Element ageElm = newMemberElm.addElement("age");
33 //7.设置节点文字.
34 ageElm.setText("29");
35 //8.删除某节点.
36 parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点
37 //三.属性相关.
38 //1.取得某节点下的某属性
39 Element root=document.getRootElement();
40 Attribute attribute=root.attribute("size");// 属性名name
41 //2.取得属性的文字
42 String text=attribute.getText();
43 //也可以用:
44 String text2=root.element("name").attributeValue("firstname");这个是取得根节点下name字节点的属性firstname的值.
45 //3.遍历某节点的所有属性
46 Element root=document.getRootElement();
47 for(Iterator it=root.attributeIterator();it.hasNext();){
48 Attribute attribute = (Attribute) it.next();
49 String text=attribute.getText();
50 System.out.println(text);
51 }
52 //4.设置某节点的属性和文字.
53 newMemberElm.addAttribute("name", "sitinspring");
54 //5.设置属性的文字
55 Attribute attribute=root.attribute("name");
56 attribute.setText("sitinspring");
57 //6.删除某属性
58 Attribute attribute=root.attribute("size");// 属性名name
59 root.remove(attribute);
60 //四.将文档写入XML文件.
61 //1.文档中全为英文,不设置编码,直接写入的形式.
62 XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
63 writer.write(document);
64 writer.close();
65 //2.文档中含有中文,设置编码格式写入的形式.
66 OutputFormat format = OutputFormat.createPrettyPrint();
67 format.setEncoding("GBK"); // 指定XML编码
68 XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
69 writer.write(document);
70 writer.close();
71 //五.字符串与XML的转换
72 //1.将字符串转化为XML
73 String text = "<members> <member>sitinspring</member> </members>";
74 Document document = DocumentHelper.parseText(text);
75 //2.将文档或节点的XML转化为字符串.
76 SAXReader reader = new SAXReader();
77 Document document = reader.read(new File("input.xml"));
78 Element root=document.getRootElement();
79 String docXmlText=document.asXML();
80 String rootXmlText=root.asXML();
81 Element memberElm=root.element("member");
82 String memberXmlText=memberElm.asXML();
83 //六.使用XPath快速找到节点.
84 //读取的XML文档示例
85 //<?xml version="1.0" encoding="UTF-8"?>
86 //<projectDescription>
87 //<name>MemberManagement</name>
88 //<comment></comment>
89 //<projects>
90 //<project>PRJ1</project>
91 //<project>PRJ2</project>
92 //<project>PRJ3</project>
93 //<project>PRJ4</project>
94 //</projects>
95 //<buildSpec>
96 //<buildCommand>
97 //<name>org.eclipse.jdt.core.javabuilder</name>
98 //<arguments>
99 //</arguments>
100 //</buildCommand>
101 //</buildSpec>
102 //<natures>
103 //<nature>org.eclipse.jdt.core.javanature</nature>
104 //</natures>
105 //</projectDescription>
106 //使用XPath快速找到节点project.
107 public static void main(String[] args){
108 SAXReader reader = new SAXReader();
109 try{
110 Document doc = reader.read(new File("sample.xml"));
111 List projects = doc.selectNodes("/projectDescription/projects/project");
112 Iterator it=projects.iterator();
113 while(it.hasNext()){
114 Element elm=(Element)it.next();
115 System.out.println(elm.getText());
116 }
117 }
118 catch(Exception ex){
119 ex.printStackTrace();
120 }
121 }
122
生成验证码
解析properties
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;

public class TestMain {

//根据key读取value
public static String readValue(String filePath,String key) {
Properties props
= new Properties();
try {
InputStream in
= new BufferedInputStream (new FileInputStream(filePath));
props.load(in);
String value
= props.getProperty (key);
System.out.println(key
+value);
return value;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}

//读取properties的全部信息
public static void readProperties(String filePath) {
Properties props
= new Properties();
try {
InputStream in
= new BufferedInputStream (new FileInputStream(filePath));
props.load(in);
Enumeration en
= props.propertyNames();
while (en.hasMoreElements()) {
String key
= (String) en.nextElement();
String Property
= props.getProperty (key);
System.out.println(key
+Property);
}
}
catch (Exception e) {
e.printStackTrace();
}
}

//写入properties信息
public static void writeProperties(String filePath,String parameterName,String parameterValue) {
Properties prop
= new Properties();
try {
InputStream fis
= new FileInputStream(filePath);
//从输入流中读取属性列表(键和元素对)
prop.load(fis);
//调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
//强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
OutputStream fos = new FileOutputStream(filePath);
prop.setProperty(parameterName, parameterValue);
//以适合使用 load 方法加载到 Properties 表中的格式,
//将此 Properties 表中的属性列表(键和元素对)写入输出流
prop.store(fos, "Update '" + parameterName + "' value");
}
catch (IOException e) {
System.err.println(
"Visit "+filePath+" for updating "+parameterName+" value error");
}
}

public static void main(String[] args) {
readValue(
"info.properties","url");
writeProperties(
"info.properties","age","21");
readProperties(
"info.properties" );
System.out.println(
"OK");
}
}
package com.banding.web.servlet;


import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ImageServlet extends HttpServlet{

/**
*
*/
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//设置Content-type响应头
resp.setContentType("image/jpeg");

//设置http头,不允许客户端缓存验证码图片(单个是指针对某一个浏览器生效)
resp.setHeader("pragma", "No-cache");
resp.setHeader(
"Cache-Control", "No-cache");
resp.setDateHeader(
"Expires", 0);

//向客户端输出二进制数据
OutputStream out = resp.getOutputStream();

//以下代码用来生成验证码图片
int width = 56;
int height = 17;
BufferedImage image
= new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
Graphics g
= image.getGraphics();
g.fillRect(
0, 0, width, height);
g.setFont(
new Font("Times New Roman",Font.ITALIC,18));

String checkCode
= "";
Random random
= new Random();
for(int i = 0; i < 4; i++){
String rand
= String.valueOf(random.nextInt(10));
checkCode
+= rand;
//随即设置数字颜色,增加识别验证码的难度,防止识别软件盗用使用
g.setColor(new Color(20+random.nextInt(110),
20+random.nextInt(110),
20+random.nextInt(110)));

g.drawString(rand, i
* 10 + 8, 16);
}
g.dispose();
//生成图片完毕

//将产生的验证码存Session中

req.getSession().setAttribute(
"checkCode",checkCode);

ImageIO.write(image,
"JPEG",out);
}
}

posted on 2010-07-28 14:46  Hobn  阅读(242)  评论(0编辑  收藏  举报

导航