随笔 - 45, 文章 - 2, 评论 - 11, 引用 - 0
数据加载中……

过滤敏感词汇类

java

这个类,是从DLOG4J上学到的。

posted @ 2011-03-31 08:16 jack zhai 阅读(831) | 评论 (3)编辑 收藏

权限管理系统 sql

sql

posted @ 2011-03-30 13:25 jack zhai 阅读(309) | 评论 (0)编辑 收藏

sqlserver 基础

  1 --创建表
  2     if exists(select * from sysobjects where name='user' and type='U'drop table [user] ;
  3     create table [user](
  4     id int identity(1,1) , --自增字段
  5     name varchar(50) ,
  6     pwd varchar(50) ,
  7     constraint pk_user_id primary key(id) --主键
  8     --constraint pk_user_id primary key(id,[name])
  9     );
 10 
 11 -- 变量的声明,sql里面声明变量时必须在变量前加@符号
 12     DECLARE @I INT
 13 
 14 -- 变量的赋值,变量赋值时变量前必须加set
 15     SET @I = 30
 16 
 17 -- 声明多个变量
 18     DECLARE @s varchar(10),@a INT
 19 
 20 -- Sql 里if语句
 21     IF 条件 BEGIN
 22         执行语句
 23     END
 24     ELSE BEGIN
 25         执行语句
 26     END
 27             
 28     DECLARE @d INT
 29     set @d = 1
 30 
 31     IF @d = 1 BEGIN
 32 
 33     -- 打印
 34         PRINT '正确'
 35     END
 36     ELSE BEGIN
 37         PRINT '错误'
 38     END
 39 
 40 
 41 -- Sql 里的多条件选择语句.
 42     DECLARE @iRet INT@PKDisp VARCHAR(20)
 43     SET @iRet = 1
 44     Select @iRet =
 45     CASE
 46         WHEN @PKDisp = '' THEN 1
 47         WHEN @PKDisp = '' THEN 2
 48         WHEN @PKDisp = '' THEN 3
 49         WHEN @PKDisp = '' THEN 4
 50         WHEN @PKDisp = '' THEN 5
 51         ELSE 100
 52     END
 53 
 54 -- 循环语句
 55     WHILE 条件 BEGIN    
 56         执行语句
 57     END
 58 
 59     DECLARE @i INT
 60     SET @i = 1
 61     WHILE @i<1000000 BEGIN
 62         set @i=@i+1
 63     END
 64     -- 打印
 65     PRINT @i
 66 
 67 
 68 -- TRUNCATE 删除表中的所有行,而不记录单个行删除操作,不能带条件
 69 
 70     /*
 71     TRUNCATE TABLE 在功能上与不带 Where 子句的 Delete 语句相同:二者均删除表中的全部行
 72 
 73 。但 TRUNCATE TABLE 比 Delete 速度快,且使用的系统和事务日志资源少。
 74     Delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过
 75 
 76 释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
 77     TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用
 78 
 79 的计数值重置为该列的种子。如果想保留标识计数值,请改用 Delete。如果要删除表定义及其数据,请
 80 
 81 使用 Drop TABLE 语句。
 82     对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 Where 子句的
 83 
 84 Delete 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
 85     TRUNCATE TABLE 不能用于参与了索引视图的表。
 86     示例
 87         下例删除 authors 表中的所有数据。*/
 88         
 89         TRUNCATE TABLE authors
 90                 
 91 
 92 -- Select INTO 从一个查询的计算结果中创建一个新表。 数据并不返回给客户端,这一点和普通的
 93 -- Select 不同。 新表的字段具有和 Select 的输出字段相关联(相同)的名字和数据类型。
 94         
 95         select * into NewTable
 96             from Uname
 97 
 98 
 99 -- Insert INTO Select
100         -- 表ABC必须存在
101         -- 把表Uname里面的字段Username复制到表ABC
102         Insert INTO ABC Select Username FROM Uname
103 
104 -- 创建临时表
105         Create TABLE #temp(
106             UID int identity(11PRIMARY KEY,
107             UserName varchar(16),
108             Pwd varchar(50),
109             Age smallint,
110             Sex varchar(6)
111         )
112         -- 打开临时表
113         Select * from #temp
114 
115 -- 存储过程
116         -- 要创建存储过程的数据库
117         Use Test
118         -- 判断要创建的存储过程名是否存在
119             if Exists(Select name From sysobjects Where name='csp_AddInfo' And
120 
121 type='P')
122             -- 删除存储过程
123             Drop Procedure dbo.csp_AddInfo
124         Go
125                 
126                 
127         -- 创建存储过程
128         Create Proc dbo.csp_AddInfo
129         -- 存储过程参数
130         @UserName varchar(16),
131         @Pwd varchar(50),
132         @Age smallint,
133         @Sex varchar(6)
134         AS
135         -- 存储过程语句体
136         insert into Uname (UserName,Pwd,Age,Sex)
137             values (@UserName,@Pwd,@Age,@Sex)
138         RETURN
139         -- 执行
140         GO
141                 
142         -- 执行存储过程
143         EXEC csp_AddInfo 'Junn.A','123456',20,'';
144 修改自:http://blog.csdn.net/mx1029/archive/2007/07/06/1680910.aspx

posted @ 2011-03-25 16:31 jack zhai 阅读(200) | 评论 (0)编辑 收藏

commons-FileUpload上传过程

1、

ServletFileUpload.isMultipartContent(request)

检测request中是否包含有multipart内容

2、如果有,生成DiskFileItemFactory工厂将进行相关的设置

         DiskFileItemFactory factory = new DiskFileItemFactory();
        // maximum size that will be stored in memory
        factory.setSizeThreshold(maxMemSize);
        // Location to save data that is larger than maxMemSize.
        factory.setRepository(new File("d:/"));

3、生成上传ServletFileUpload类,并将DiskFileFactory工厂传给它,并对ServletFileUpload进行配置

       // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);
        // maximum file size to be uploaded.
        upload.setSizeMax(maxFileSize);

4、从request得到上传的文件列表

            // Parse the request to get file items.
            List fileItems = upload.parseRequest(request);

            // Process the uploaded file items
            Iterator i = fileItems.iterator();

5、处理文件:写入或者其他操作

while (i.hasNext()) {
                FileItem fi = (FileItem) i.next();
                if (!fi.isFormField()) {
                    // Get the uploaded file parameters
                    String fieldName = fi.getFieldName();
                    String fileName = fi.getName();
                    String contentType = fi.getContentType();
                    boolean isInMemory = fi.isInMemory();
                    long sizeInBytes = fi.getSize();
                    // Write the file
                    if (fileName.lastIndexOf("\\") >= 0) {
                        file = new File(
                                filePath
                                        + fileName.substring(fileName
                                                .lastIndexOf("\\")));
                    } else {
                        file = new File(
                                filePath
                                        + fileName.substring(fileName
                                                .lastIndexOf("\\") + 1));
                    }
                    fi.write(file);
                    out.println("Uploaded Filename: " + fileName + "<br>");
                }
            }

}

 

说明:

FileItem接口是对用户上传文件的封装

DiskFileItemFactory实现了FileItemFactory接口,主要方法有public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName)

ServletFileUpload从FileUpload继承,而FileUpload又从FileUploadBase继承,功能:分析传入的request对象、得到文件列表FileItemIterator……

posted @ 2011-03-23 13:01 jack zhai 阅读(1545) | 评论 (0)编辑 收藏

利用Servlet + commons-FileUpload 实现文件上传

简明步骤

1、下载所需包:commons-FileUpload  http://commons.apache.org/fileupload/ 依赖commons-IO包

                          commons-IO http://commons.apache.org/io/

2、前端:

3、书写Servlet

4、web.xml中配置上传文件存放地址

5、web.xml中配置Servlet

 

 

一、前端

 
<html>
<head>
<title>File Uploading Form</title>
</head>
<body>
<h3>File Upload:</h3>
Select a file to upload: <br />
<form action="UploadServlet" method="post"
                        enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>

 

二、书写Servlet

web.xml

三、web.xml中配置上传文件存放地址

web.xml

 

四、web.xml中配置Servlet

web.xml

posted @ 2011-03-23 09:25 jack zhai 阅读(1137) | 评论 (0)编辑 收藏

翻译:使用Servlet实现文件上传

原文地址:http://www.tutorialspoint.com/servlets/servlets-file-uploading.htm

 

一个Servlet可以通过HTML表单标签将文件上传到服务器。支待上传的有文本、图像及任何文件。

创建文件上传表单:

         下面的html代码创建了一个上传表单。创建过程需要注意以下几点:

form标签中的method属性必须设置为POST,即GET方法是不可以的。

form标签中的enctype属性应该设置为multipart/form-data

from标签中的action属性应该与服务器后台的servlet映射路径相同。接下来的实例,我们将使用UploadServlet实现文件上传。

要上传一个文件,你应该使用一个<input type=”file”.../>标记。要多个文件上传,必须包含多个具有不同的名称属性值的<input type=”file”.../>标记。The browser associates a Browse button with each of them

<html>

<head>

<title>File Uploading Form</title>

</head>

<body>

<h3>File Upload:</h3>

Select a file to upload: <br />

<form action="UploadServlet" method="post"

                        enctype="multipart/form-data">

<input type="file" name="file" size="50" />

<br />

<input type="submit" value="Upload File" />

</form>

</body>

</html>

以上代码将得到以下效果。你可以在本地PC上选择一个文件。当你点击“Upload File”,表单将会随着你选择的文件一起被提交。

后台servlet

以下UploadServlet servlet将接收上传的文件并将其保存入<Tomcat-installation-directory>/webapps/data文件夹。这个文件夹的名称可以通过外部配置文件web.xml中的context-param元素内容增加。代码如下:

<web-app>
....
<context-param> 
    <description>Location to store uploaded file</description> 
    <param-name>file-upload</param-name> 
    <param-value>
         c:"apache-tomcat-5.5.29"webapps"data"
     </param-value> 
</context-param>
....
</web-app>

         以下是实现了多文件同时上传功能的UploadServlet。在此之前您必须确定以下几点:

以下实例依赖F ileUpload类,所以您须将最新版的commons-fileupload.x.x.jar放到您的classpath下。可以从这里下载:http://commons.apache.org/fileupload/

FileUpload类依赖于Commons IO包,所以您须将最新版commons-fileupload.x.x.jar放到您的classpath下。可以从这里下载:http://commons.apache.org/io/

在测试以下例子的时候,您应该上传小于maxFileSize的文件,否则无法上传。

事先确定你已经建议好文件夹:c:"tempc:"apache-tomcat-5.5.29"webapps"data

// Import required java libraries
import java.io.*;
import java.util.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.output.*;
 
public class UploadServlet extends HttpServlet {
   
   private boolean isMultipart;
   private String filePath;
   private int maxFileSize = 50 * 1024;
   private int maxMemSize = 4 * 1024;
   private File file ;
 
   public void init( ){
      // Get the file location where it would be stored.
      filePath = 
             getServletContext().getInitParameter("file-upload"); 
   }
   public void doPost(HttpServletRequest request, 
               HttpServletResponse response)
              throws ServletException, java.io.IOException {
      // Check that we have a file upload request
      isMultipart = ServletFileUpload.isMultipartContent(request);
      response.setContentType("text/html");
      java.io.PrintWriter out = response.getWriter( );
      if( !isMultipart ){
         out.println("<html>");
         out.println("<head>");
         out.println("<title>Servlet upload</title>"); 
         out.println("</head>");
         out.println("<body>");
         out.println("<p>No file uploaded</p>"); 
         out.println("</body>");
         out.println("</html>");
         return;
      }
      DiskFileItemFactory factory = new DiskFileItemFactory();
      // maximum size that will be stored in memory
      factory.setSizeThreshold(maxMemSize);
      // Location to save data that is larger than maxMemSize.
      factory.setRepository(new File("c:""temp"));
 
      // Create a new file upload handler
      ServletFileUpload upload = new ServletFileUpload(factory);
      // maximum file size to be uploaded.
      upload.setSizeMax( maxFileSize );
 
      try{ 
      // Parse the request to get file items.
      List fileItems = upload.parseRequest(request);
        
      // Process the uploaded file items
      Iterator i = fileItems.iterator();
 
      out.println("<html>");
      out.println("<head>");
      out.println("<title>Servlet upload</title>"); 
      out.println("</head>");
      out.println("<body>");
      while ( i.hasNext () ) 
      {
         FileItem fi = (FileItem)i.next();
         if ( !fi.isFormField () )      
         {
            // Get the uploaded file parameters
            String fieldName = fi.getFieldName();
            String fileName = fi.getName();
            String contentType = fi.getContentType();
            boolean isInMemory = fi.isInMemory();
            long sizeInBytes = fi.getSize();
            // Write the file
            if( fileName.lastIndexOf("""") >= 0 ){
               file = new File( filePath + 
               fileName.substring( fileName.lastIndexOf(""""))) ;
            }else{
               file = new File( filePath + 
               fileName.substring(fileName.lastIndexOf("""")+1)) ;
            }
            fi.write( file ) ;
            out.println("Uploaded Filename: " + fileName + "<br>");
         }
      }
      out.println("</body>");
      out.println("</html>");
   }catch(Exception ex) {
       System.out.println(ex);
   }
   }
   public void doGet(HttpServletRequest request, 
                       HttpServletResponse response)
        throws ServletException, java.io.IOException {
        
        throw new ServletException("GET method used with " +
                getClass( ).getName( )+": POST method required.");
   } 
}

       编译并运行Servlet

    编译以上UploadServlet并在web.xml中创建必须的实体,如下:

<servlet>
   <servlet-name>UploadServlet</servlet-name>
   <servlet-class>UploadServlet</servlet-class>
</servlet>
 
<servlet-mapping>
   <servlet-name>UploadServlet</servlet-name>
   <url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>

         现在可以尝试使用你创建的HTML表单上传文件。当你访问http://localhost:8080/UploadFile.htm,浏览器里将会显示如下效果,您可以从本地上传你想要上传的任何文件。

         如果您的servlet脚本运行成功,您的文件上传在c:"apache-tomcat-5.5.29"webapps"data"directory文件夹。

posted @ 2011-03-23 08:52 jack zhai 阅读(3797) | 评论 (0)编辑 收藏

JavaMail发送邮件

1、取得系统Properties,并配置

    Properties props = System.getProperties();
    props.setProperty("mail.transport.protocol", "smtp"); // smtp协议
    props.setProperty("mail.smtp.host", m_server); // 服务器地址
    props.setProperty("mail.smtp.port", "" + m_port); // 端口号

    props.setProperty("mail.smtp.auth", "true"); //// 认证信息

2、将取得Session

javax.mail.Session sess = javax.mail.Session.getDefaultInstance(props);

3、实例MimeMessage类,然后设置收件人、主题、发件日期

MimeMessage msg = new MimeMessage(sess);

msg.setFrom(new InternetAddress(m_from));        // 发件人

msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(m_to)); //收件人

msg.setSubject(m_subject); //主题

msg.setSentDate(new Date()); //发件日期

4、向MimeMessage中添加文本内容及附件

MimeMultipart content = new MimeMultipart();// 文本内容

MimeBodyPart  part = new MimeBodyPart(); //part还需要加入头,类型之类的属性

content.addBodyPart(part);   

part = new MimeBodyPart();                 //这里是加入附件
FileDataSource fds = new FileDataSource(filename);
part.setDataHandler(new DataHandler(fds));
part.setFileName(MimeUtility.encodeText(fds.getName()));

content.addBodyPart(part);

msg.setContent(content); //设置并保存
msg.saveChanges();

5、使用Session取得Transport

Transport trans = sess.getTransport();

6、使用Transport连接服务器

trans.connect(m_server, m_user, m_pass);
        

7、发送邮件并关闭

trans.sendMessage(msg, InternetAddress.parse(m_to));
trans.close();

posted @ 2011-03-18 23:36 jack zhai 阅读(258) | 评论 (0)编辑 收藏

java对象序列化知识

1、java对象序列化不保存对象中的静态变量

ser

2、虚拟机是否允许反序列化,不仅取决于类路径和功能代码是否一致,一个非常重要的一点是两个类的序列化 ID 是否一致(就是 private static final long serialVersionUID = 1L)。

3、父类的序列化与transient关键字

只有子类和父类都实现了Serializable接口时,对子类反序列化时才会将父类也序列化。反序列化过程是先反序列过父类对象再反序列化子类。而如果不想序列化某一个变量,则可以在定义变量时使用transient关键字。

Parent
Son and main


4、Java 序列化机制为了节省磁盘空间,具有特定的存储规则,当写入文件的为同一对象时,并不会再将对象的内容进行存储,而只是再次存储一份引用。

 

从IBM DW 整理而来

http://www.ibm.com/developerworks/cn/java/j-lo-serial/index.html#icomments


 

posted @ 2011-03-15 13:24 jack zhai 阅读(172) | 评论 (0)编辑 收藏

理解Class.forName()

Class.froName(“cc.a.C”)

返回:C这个类的class(其实是这个类的字节码)

作用:告诉jvm使用相应的加载器,将C.class加载入jvm(至于加载到哪个位置,本人还不知道)

 

而Class.forName(“cc.a.C”).newInstance()则是实例化一个对象;而new关键的作用也是实例化一个对象

所以可以粗略的将这两种实例化对象的方法等同。

当然它们有不同的地方。

在网上看到别人是这样区别的:

newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。

posted @ 2011-03-14 18:57 jack zhai 阅读(162) | 评论 (0)编辑 收藏

给eclipes安装myeclipes插件

将myeclipes安装目录C:\Program Files\Genuitec\Common\plugins 所有的东西复制到eclipes安装目录的\plugins里,并覆盖。

重新启动eclipes就可以了。

posted @ 2011-03-14 11:07 jack zhai 阅读(437) | 评论 (0)编辑 收藏

仅列出标题
共5页: 上一页 1 2 3 4 5 下一页