2006年5月10日
find basedir -name CVS |xargs rm -rf
posted @
2007-04-17 14:32 小铁匠 阅读(319) |
评论 (0) |
编辑 收藏
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
int length = req.getContentLength();
if (length > 0) {
BufferedRequestWrapper bufferedRequest = new BufferedRequestWrapper(req,length);
InputStream is = bufferedRequest.getInputStream();
byte[] content = new byte[length];
int pad = 0;
while(pad < length){
pad += is.read(content, pad, length);
}
request = bufferedRequest;
}
chain.doFilter(request, response);
}
BufferedRequestWrapper .java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class BufferedRequestWrapper extends HttpServletRequestWrapper {
ByteArrayInputStream bais;
BufferedServletInputStream bsis;
byte[] buffer;
public BufferedRequestWrapper(HttpServletRequest req,int length) throws IOException {
super(req);
// Read InputStream and store its content in a buffer.
InputStream is = req.getInputStream();
buffer = new byte[length];
int pad = 0;
while(pad < length){
pad += is.read(buffer, pad, length);
}
}
public ServletInputStream getInputStream() {
try {
// Generate a new InputStream by stored buffer
bais = new ByteArrayInputStream(buffer);
// Istantiate a subclass of ServletInputStream
// (Only ServletInputStream or subclasses of it are accepted by the
// servlet engine!)
bsis = new BufferedServletInputStream(bais);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
}
return bsis;
}
}
BufferedServletInputStream .java
import java.io.*;
import javax.servlet.ServletInputStream;
/*
Subclass of ServletInputStream needed by the servlet engine.
All inputStream methods are wrapped and are delegated to
the ByteArrayInputStream (obtained as constructor parameter)!
*/
public class BufferedServletInputStream extends ServletInputStream {
ByteArrayInputStream bais;
public BufferedServletInputStream(ByteArrayInputStream bais) {
this.bais = bais;
}
public int available() {
return bais.available();
}
public int read() {
return bais.read();
}
public int read(byte[] buf, int off, int len) {
return bais.read(buf, off, len);
}
}
posted @
2006-10-25 17:01 小铁匠 阅读(2729) |
评论 (1) |
编辑 收藏
$ gcc -o x11fred -L/usr/openwin/lib x11fred.c -lX11
will compile and link a program called x11fred using the version of the library libX11 found in the
/usr/openwin/lib directory.
posted @
2006-07-10 14:54 小铁匠 阅读(414) |
评论 (0) |
编辑 收藏
有发送人名称中文支持,支持bytes格式附件,附件中文支持
public static boolean send(String fromName, String fromAddr, String to, String subject, String
body, String fileName, byte[] file) throws
Exception {
//发送人名称,用base64编码,再加上特殊标志
fromName = "=?GB2312?B?" + new String(base64.encode((fromName).getBytes())) + "?=";
Properties props = new Properties();
Session session = Session.getInstance(props, null);
props.put("mail.smtp.host", Constants.mailhost);
props.put("mail.smtp.auth", "false");
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(fromAddr,fromName));
//后面的BodyPart将加入到此处创建的Multipart中
Multipart mp = new MimeMultipart();
// Create the message part
BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
messageBodyPart.setText(body);
mp.addBodyPart(messageBodyPart);
/*发送附件*/
if (file != null && file.length > 0) {
//利用枚举器方便的遍历集合
MimeBodyPart mbp = new MimeBodyPart();
// File fileTmp = null;
//得到数据源
// FileDataSource fds = new FileDataSource(fileTmp);
//得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(new ByteArrayDataSource(file,"application/octet-stream")));
//得到文件名同样至入BodyPart
mbp.setFileName(MimeUtility.encodeWord(fileName,"GB2312",null));
mp.addBodyPart(mbp);
}
//Multipart加入到信件
msg.setContent(mp);
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
msg.setSubject(subject);
msg.setHeader("X-Mailer", "personal Email Sender");
msg.setSentDate(new Date());
Transport transport = session.getTransport("smtp");
//添加认证信息
transport.connect(Constants.mailhost, Constants.user, Constants.pwd);
transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
transport.close();
return true;
}
import java.io.*;
import javax.activation.*;
public class ByteArrayDataSource implements DataSource {
/** * Data to write. */
private byte[] _data;
/** * Content-Type. */
private String _type;
/* Create a datasource from an input stream */
public ByteArrayDataSource(InputStream is, String type) {
_type = type;
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
int ch;
// XXX : must be made more efficient by
// doing buffered reads, rather than one byte reads
while ((ch = is.read()) != -1)
os.write(ch);
_data = os.toByteArray();
} catch (IOException ioe) {
}
}
/* Create a datasource from a byte array */
public ByteArrayDataSource(byte[] data, String type) {
_data = data;
_type = type;
}
/* Create a datasource from a String */
public ByteArrayDataSource(String data, String type) {
try {
// Assumption that the string contains only ascii
// characters ! Else just pass in a charset into this
// constructor and use it in getBytes()
_data = data.getBytes("iso-8859-1");
} catch (UnsupportedEncodingException uee) {
}
_type = type;
}
public InputStream getInputStream() throws IOException {
if (_data == null)
throw new IOException("no data");
return new ByteArrayInputStream(_data);
}
public OutputStream getOutputStream() throws IOException {
throw new IOException("cannot do this");
}
public String getContentType() {
return _type;
}
public String getName() {
return "dummy";
}
}
posted @
2006-05-10 18:02 小铁匠 阅读(630) |
评论 (1) |
编辑 收藏