java 环境变量、tomcat 环境变量配置

1、java 环境变量配置

JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:/java/jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因   为以后运行tomcat,eclipse等都需要依*此变量);

Path使得系统可以在任何路径下识别java命令,设为:%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin

 CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar (要加.表示当前路径)

“开始”->;“运行”,键入“cmd”;

键入命令“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功;

2、tomcat 环境变量配置

CATALINA_HOMEc:\tomcat

CATALINA_BASEc:\tomcat

TOMCAT_HOME: C:\Tomcat

然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath如下:

classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;

接着可以启动tomcat

运行cat目录\bin—startup.bat

: shutdown.bat是关闭服务器

IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。

 

 

解决 ENCTYPE="multipart/form-data 无法获取表单数据

在form表单中上传文件时,编码必须是ENCTYPE="multipart/form-data,这种编码使得文件上传是使用二进制编码,从而提高上传效率,但是这使得其它类型的表单数据使用request.getParameter("***")时无法获取,搜到一篇很有用的资料

http://yjandx.iteye.com/blog/1170356

http://apps.hi.baidu.com/share/detail/59523

JSP 文件上传下载 mysql数据库

尝试在JSP中将文件上传到mysql数据库,没有多少资料支持,自己先摸索摸索吧!

http://junier.javaeye.com/blog/607473

mysql BLOB类型

TinyBlob    最大255

Blob        最大65k

MediumBlob  最大16M

LongBlob    最大4G

参数配置

Windows通过文件my.ini (在系统盘)

[mysqld]
set-variable = max_allowed_packet=10M

JSP 页面之间传递参数

数据库课程设计,将学生所选课程的名字设为链接,学生点击链接后,进入课程相关页面,但是必须记住用户点击链接课程的ID,以便在重定向的页面中以课程ID访问数据库,得到课程的详细信息,想了很久没有解决方法,有人说用cookie,学了一点JS,觉得不行。于是发现了这个网站从而解决了问题。

http://stanlyy.javaeye.com/blog/462161

其中的链接可以传递多参数

 

JSP 注意点

1. 使用javascript验证用户输入密码与确认密码时,使用

form.initPwd.value !=  而非 equals 来判定

2. 同一个session变量在多个用户之间是共享的,比如使用userRole来记住用户身份,学生登陆后,uerRole的值赋为1,教师登陆后,uerRole的值赋为2,实验发现,在同一浏览器中,教师先登录,学生后登录,userRole的值会发生变化。上网查了之后发现:session对象当客户端首次访问时,创建一个新的session对象.并同时生成一个sessionId,并在此次响应中将sessionId以响应报文的方式些回客户端浏览器内存或以重写url方式送回客户端,来保持整个会话,只要sever端的这个session对象没有销毁,以后再调用 request.getSession()时就直接根据客户端的sessionId来检索server端生成的session对象并返回,不会再次去新建,除非根据此sessionId没有检索到session对象.

由此看来,使用同一个浏览器,同一session变量便会在多用户之间共享,而使用不同浏览器这个现象就不会发生,事实也是如此。早上痛下决心解决了这个问题,还是使用链接传递参数,看来最朴实的东西有时也是最有用的。

JSP 页面之间传递参数的五种方法:

http://developer.51cto.com/art/200907/133815.htm

 

Java 文件IO编码

在处理Java文件IO是经常会出现编码问题,在输入输出流中指定文件编码即可

BufferedReader input = null;
InputStreamReader reader=new InputStreamReader(new FileInputStream(input_fileName),"gb2312"); 
input = new BufferedReader(reader);

PrintWriter output = new PrintWriter(output_fileName,"gb2312");
input_fileName = "E:/extract/"+((Integer)i).toString()+".txt";

 

Lucene fuzzy query

使用Levenshetein distance

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.FuzzyQuery;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;

import java.io.*;


public class fuzzyquery {

/**
* @param args
* @throws IOException 
*/
public static void main(String[] args) throws IOException 
{
// TODO Auto-generated method stub
String INDEX_STORE_PATH = "E://fuzzyQueryIndexFile";
IndexWriter writer = new IndexWriter(INDEX_STORE_PATH,new StandardAnalyzer(),true);
writer.setUseCompoundFile(false);

Document doc1 = new Document();
Document doc2 = new Document();
Document doc3 = new Document();
Document doc4 = new Document();
Document doc5 = new Document();
Document doc6 = new Document();

Field f1 = new Field("content", "word", Field.Store.YES, Field.Index.TOKENIZED);
Field f2 = new Field("content", "work", Field.Store.YES, Field.Index.TOKENIZED);
Field f3 = new Field("content", "world", Field.Store.YES, Field.Index.TOKENIZED);
Field f4 = new Field("content", "seed", Field.Store.YES, Field.Index.TOKENIZED);
Field f5 = new Field("content", "sword", Field.Store.YES, Field.Index.TOKENIZED);
Field f6 = new Field("content", "ford", Field.Store.YES, Field.Index.TOKENIZED);

doc1.add(f1);
doc2.add(f2);
doc3.add(f3);
doc4.add(f4);
doc5.add(f5);
doc6.add(f6);

writer.addDocument(doc1);
writer.addDocument(doc2);
writer.addDocument(doc3);
writer.addDocument(doc4);
writer.addDocument(doc5);
writer.addDocument(doc6);

writer.close();

IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);

Term t =new Term("content","work");
FuzzyQuery query = new FuzzyQuery(t);
Hits hits = searcher.search(query);
for(int i=0; i<hits.length();i++)
System.out.println(hits.doc(i));

}
}

重定向Java输出

   程序中时用第三方接口,我希望将程序结果输出到字符串中,这样可以嵌入到网页中,但是接口的函数中固定输出到终端,试了n种方法,包括jar文件的反编译,修改其中的class文件,在打包,但是这样会出现各种问题,在无奈之余,在网上搜到一篇文章http://zhouzaibao.javaeye.com/blog/338113,重定向printStackTree到字符串,正是我所需要的

  1.  StringWriter sw = new StringWriter();  
  2.  PrintWriter pw = new PrintWriter(sw);  
  3.  ex.printStackTrace(pw);  
  4.  return sw.toString();  

轻松解决了问题!