隨筆-17  評論-6  文章-1  trackbacks-0
            2006年5月10日
          find   basedir   -name   CVS   |xargs   rm   -rf  
          posted @ 2007-04-17 14:32 小鐵匠 閱讀(323) | 評論 (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 小鐵匠 閱讀(2744) | 評論 (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 小鐵匠 閱讀(424) | 評論 (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 小鐵匠 閱讀(648) | 評論 (1)編輯 收藏
          主站蜘蛛池模板: 司法| 吴川市| 昆明市| 临颍县| 宁化县| 射洪县| 若羌县| 贺兰县| 湟源县| 郴州市| 安溪县| 鹿泉市| 比如县| 泉州市| 玉田县| 金堂县| 永吉县| 安岳县| 顺昌县| 彩票| 句容市| 隆安县| 威宁| 霍山县| 德保县| 岫岩| 定襄县| 临江市| 沅陵县| 大新县| 宜君县| 安宁市| 曲松县| 柯坪县| 丹寨县| 东阿县| 扎鲁特旗| 浑源县| 南江县| 金乡县| 托克托县|