您的位置:首页 > 编程语言 > Java开发

java 的一些知识

2007-08-07 13:25 295 查看
1. URL中文传输编码 %D5%F8 (java )
a) 顺转码: URLEncoder
b) 反转码: URLDecoder
c) request.QueryString()

2. tomcat5.0 带传输中文的参数需要在 tomcat下的 server.xml 下加上URIEncoding=GBK
3. 取得汉字的拼音码
a) 区位码=区码+位码; 一个汉字两个字节,前一个字节是区位
b) 一级字库区位码从1601-5590 分别对应声母a到z 23个
c) {1601,1637,1833,2078,2274,2302,2433,2594,2787,3106,3212,3472,3635,3722,3730,3858,4027,4086,4390,4558,4684,4925,5249 }
d) {'A', 'B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z'};
4. tomcat安装前要安装jdk (并且设置环境变量)
a) classpath=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/htmlconverter;
b) java_home=c:/jdk1.5
c) path=%JAVA_HOME%/bin;
d) 注意有的环境变量的名称就加在已有的环境变量的内容的前面.
5. javascript 实现文本框于多选框的联动
a) <script language="javascript">
b) <!--
c) function lian(){
d) if(document.form1.check.value==1){
e) document.form1.a.disabled = !document.form1.a.disabled ;
f) }
g) }
h)
i) //-->
j) </script>
k) ======================================================
l) <body>
m) <form id="form1" name="form1" method="post" action="">
n) <p>
o) <input name="check" type="checkbox" id="check" value="1" onClick="lian();" />
p) </p>
q) <p>
r) <input name="a" type="text" id="a" />
s) </p>
t) </form>
u) </body>

6. Ajax实现不刷新页面的用户名唯一性检测
XmlHttpRequest 通讯

7. 可以在web.xml中设置过滤器是否对整个网站有效.
<filter-mapping>
<filter-name>filtergbk</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
可以设置成只对某个文件夹有效.
<url-pattern>/文件夹名字/*</url-pattern>

8.在平台中退出以后就是把session 设置为null,如果不马上关闭浏览器的话,
还是可以盗链的?
答: 使用HTTP 头信息"Expires" 和 "Cache-Control"
1> no - cache:强制缓存从服务器上获取新的页面
2> no - store : 在任何环境下缓存不保存任何页面
过滤器中:
response.setHeader("Cache-control","no-cache");
response.setHeader("Cache-control","no-store");
response.setDateHeader("expires",0);
response.setHeader("Pragma","no-cache");

9.在启动tomcat时可能遇到的几个问题
[align=left] 在启动To m c a t的过程中,可能会遇到一些问题,这里就常见问题进行一些说明。[/align]
[align=left]1) 启动To m c a t失败。出现这种情况时,可能有两种现象:[/align]
[align=left]第一种:执行s t a r t u p . b a t以后没有Ja v a窗口出现。[/align]
[align=left]第二种:有Ja v a窗口出现,但是接着自行退出。[/align]
[align=left]对于第一种情况,很可能是TOMCAT_HOME环境变量设置有问题,打开s t a r t u p . b a t文件,[/align]
[align=left]观察脚本的写法,一般可以发现问题。[/align]
[align=left]对于第二种情况,可能是当前系统中已经有一个服务器占用了8 0 8 0端口,这时需要把原先[/align]
[align=left]的服务器关闭,或者利用后面讲的To m c a t的配置方法修改To m c a t的服务端口。也可能是由于[/align]
[align=left]CLASSPAT H设置有误,这时需要检查CLASSPATH是否设置正确。[/align]
[align=left]2) 启动To m c a t成功,可以看到首页,但是不能执行JSP脚本。[/align]
[align=left]这种情况一般是由于CLASSPAT H设置有误或JAVA _ HOME设置有误,经过试验发现,当使[/align]
[align=left]用Wi n d o w s自带的j a v a . e x e(c : / w i n n t / s y s t e m 3 2或c : / w i n d o w s / s y s t e m)时可能会出现这种问题。[/align]

[align=left]10.Windows下代码保护的问题[/align]
[align=left]在Wi n d o w s下使用To m c a t时有一个问题需要注意,可以做一个试验,启动To m c a t后,在浏[/align]
[align=left]览器的地址栏中键入: http://127.0.0.1:8080/examples/jsp/ HelloWorld . JSP(注意后缀要大写)。[/align]
[align=left]就会发现奇怪的现象,浏览器的窗口中什么都没有,查看H T M L源文件就会发现,这个J S P文件[/align]
[align=left]的源代码被To m c a t完全输出到了浏览器!如果是这样,岂不是服务器端的任何源代码都会被暴[/align]
[align=left]露在互联网上。[/align]
[align=left]实际上,解决方法很简单,把各种后缀的组合全部写到To m c a t _ H o m e / c o n f / w e b . x m l里就可[/align]
[align=left]以了,这样t o m c a t会将不同后缀名的j s p分开对待,就不会泄露代码了。[/align]
[align=left]<servlet-mapping>[/align]
[align=left]<servlet-name>[/align]
[align=left]jsp[/align]
[align=left]</servlet-name>[/align]
[align=left]<url-pattern>[/align]
[align=left]*.jsp[/align]
[align=left]</url-pattern>[/align]
[align=left]</servlet-mapping>[/align]
[align=left]<servlet-mapping>[/align]
[align=left]<servlet-name>[/align]
[align=left]Jsp[/align]
[align=left]</servlet-name>[/align]
[align=left]<url-pattern>[/align]
[align=left]*.Jsp[/align]
[align=left]</url-pattern>[/align]
[align=left]</servlet-mapping>[/align]
[align=left]<servlet-mapping>[/align]
[align=left]<servlet-name>[/align]
[align=left]JSp[/align]
[align=left]</servlet-name>[/align]
[align=left]<url-pattern>[/align]
[align=left]*.JSp[/align]
[align=left]</url-pattern>[/align]
[align=left]</servlet-mapping>[/align]
[align=left]<servlet-mapping>[/align]
[align=left]<servlet-name>[/align]
[align=left]JsP[/align]
[align=left]</servlet-name>[/align]
[align=left]<url-pattern>[/align]
[align=left]*.JsP[/align]
[align=left]</url-pattern>[/align]
[align=left]</servlet-mapping>[/align]
[align=left]<servlet-mapping>[/align]
[align=left]<servlet-name>[/align]
[align=left]JSP[/align]
[align=left]</servlet-name>[/align]
[align=left]<url-pattern>[/align]
[align=left]*.JSP[/align]
[align=left]</url-pattern>[/align]
[align=left]</servlet-mapping>[/align]
[align=left]<servlet-mapping>[/align]
[align=left]<servlet-name>[/align]
[align=left]jSp[/align]
[align=left]</servlet-name>[/align]
[align=left]<url-pattern>[/align]
[align=left]*.jSp[/align]
[align=left]</url-pattern>[/align]
[align=left]</servlet-mapping>[/align]
[align=left]<servlet-mapping>[/align]
[align=left]<servlet-name>[/align]
[align=left]jSP[/align]
[align=left]</servlet-name>[/align]
[align=left]<url-pattern>[/align]
[align=left]*.jSP[/align]
[align=left]</url-pattern>[/align]
[align=left]</servlet-mapping>[/align]
[align=left]<servlet-mapping>[/align]
[align=left]<servlet-name>[/align]
[align=left]jsP[/align]
[align=left]</servlet-name>[/align]
[align=left]<url-pattern>[/align]
[align=left]*.jsP[/align]
[align=left]</url-pattern>[/align]
[align=left]</servlet-mapping>[/align]

11.jsp文件下载不显示乱码(文件内容) Verdana字体(文件名可用中文)
download.jsp
调用方法:
<a href src = “download.jsp?filename=文件名.后缀名”>下载</a>
<%
java.io.BufferedInputStream bis=null;
java.io.BufferedOutputStream bos=null;
try{
String filename=request.getParameter("filename");
filename=new String(filename.getBytes("iso8859-1"),"gb2312");
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition","attachment; filename="+new String(filename.getBytes("gb2312"),"iso8859-1"));
bis =new java.io.BufferedInputStream(new java.io.FileInputStream(config.getServletContext().getRealPath("files/" + filename)));
bos=new java.io.BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}
}
catch(Exception e){
e.printStackTrace();
}
finally {
if (bis != null)bis.close();
if (bos != null)bos.close();
//自己加的防止报错
if (response.getOutputStream()!=null){
response.getOutputStream().close();
}
%>

12.如何实现动态下拉框
―――――――――――――――――――――――――――――――――――――――
在开发项目中,经常会遇到大小类的问题,即有两个下拉框,一个为主,一个为次,如果主下拉框选择更新后根据所选择的项从数据库中读取相关数据并更新到次下拉框中.比如主下拉框为大类,次下拉框为大类下的选项,并且页面是没有提交的。
思路是在打开页面时就要所有的大类和小类都从数据库中取出,把所有的小类组装成一个javascript小类数组(数组结构为 Array("大类编号","小类编号","小类名称")),当大类改变时,激活一个javascript函数从小类数组中取出从属于选中大类的所有小类,把其在小类下拉框显示即可。
*完整源代码(已经测试通过)
<%@ page contentType="text/html;charset=gbk" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<jsp:useBean id="dba" scope="page" class="db.DBAccess">
</jsp:useBean>
<HTML>
<HEAD>
<TITLE>JAVA技术</TITLE>
</HEAD>
<BODY>
<DIV align=center>
<CENTER>
<form name="main" method="post" action="jsp8.jsp" target="_blank">
<TABLE id=AutoNumber1 style="FONT-SIZE: 10pt; BORDER-COLLAPSE: collapse"
borderColor=#c0c0c0 cellPadding=0 width=760 border=1>
<TBODY>
<TR>
<TD align=middle width=750 bgColor=#f2f2f2 colSpan=2>
</TD>
</TR>

<TR>
<TD align=middle width=68>省   份</TD>
<TD width=682> <select name="maintype" onChange="javaScript:changemaintype(document.main.maintype.options[document.main.maintype.selectedIndex].value);">
<!--下面的下拉框数据可以自己改成从数据库读出的-->
<option value="">--请选择--</option>
<%
try{
dba.getConnection();
dba.rs = dba.executeQuery("select quybm,quymc from tg_region where len(quybm) = 2 order by quybm");
int mycount = 0 ;
while(dba.rs.next()){
String quybm = "" ;
String quymc = "" ;
quybm = dba.rs.getString("quybm");
quymc = dba.rs.getString("quymc");
mycount++;
//System.out.println(mycount);
%>
<option value="<%=quybm%>"><%=quymc%></option>
<%}}catch(Exception aa){aa.printStackTrace();}%>
</select>
</TD></TR>
<script language = "JavaScript">
var subcat1 = new Array();
<!--下面的数组数据可以自己改成从数据库读出的,格式为Array("省份编号","城市编号","城市名称"),如-->
<%
try{
dba.rs = dba.executeQuery("select left(quybm,2) as shenf,quybm as chengs,quymc from tg_region where len(quybm) > 2");
int iCount = 0;
while(dba.rs.next()){
%>
subcat1[<%=iCount%>] = new Array("<%=dba.rs.getString("shenf")%>","<%=dba.rs.getString("chengs")%>","<%=dba.rs.getString("quymc")%>");

<%
//调试
iCount++;
}}catch(Exception aa){aa.printStackTrace();}finally{dba.close();}%>
var js_count=iCount;
function changemaintype(locationid)
{
document.main.detailtype.options[0] = new Option("--请选择--", "");
document.main.detailtype.length = 1;
var locationid=locationid;
var ii;
//设定城市的总数
for (ii=0;ii<3154;ii++)
{
if((subcat1[ii][0] == locationid))
{
document.main.detailtype.options[document.main.detailtype.length] = new Option(subcat1[ii][2],subcat1[ii][1]);
}
}
//alert(locationid);
}
</script>
<TR>
<TD align=middle width=68>城   市</TD>
<TD width=682> <select name="detailtype">
<option value="">--请先选择省份--</option>
</select>
</TD></TR>

</TBODY></TABLE>
<input type="submit" value="提交"/>
</FORM>
</BODY>
</html>

13.java中调用数据库的驱动字符串
1.Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID String user="test"; String password="test"; Connection conn= DriverManager.getConnection(url,user,password);
2、DB2数据库 Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 String user="admin"; String password=""; Connection conn= DriverManager.getConnection(

[align=left]14.JPG图片上传(未实现中文处理)[/align]
[align=left] uploadimage1.jsp[/align]
[align=left]<%@ page contentType="text/html; charset=gbk" %>[/align]
[align=left]<%@ page language="java" %>[/align]
[align=left]<HTML>[/align]
[align=left]<HEAD>[/align]
[align=left]<TITLE>DATABASE</TITLE>[/align]
[align=left]<meta http-equiv="Content-Type" content="text/html; charset=gb2312">[/align]
[align=left]</HEAD>[/align]
[align=left]<FORM METHOD=POST ACTION="uploadimage2.jsp">[/align]
[align=left]人物:<INPUT TYPE="text" NAME="name"><BR>[/align]
[align=left]图片:<INPUT TYPE="file" NAME="image"><BR>[/align]
[align=left]<INPUT TYPE="submit" value="提交">[/align]
[align=left]</FORM>[/align]
[align=left]</BODY>[/align]
[align=left]</HTML>[/align]
[align=left][/align]
[align=left]uploadimage2.jsp[/align]
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<%@ page import="com.sun.image.codec.jpeg.*"%>
<%@ page import="java.awt.image.*"%>
<%@ page import="java.awt.*"%>
<%
String name=request.getParameter("name");
name=new String(name.getBytes("ISO-8859-1"));
String ima=request.getParameter("image");
//中文转换
ima=new String(ima.getBytes("iso8859-1"),"gb2312");
try{
String path=request.getRealPath("/");
FileOutputStream ot = new FileOutputStream(path+name+".jpg");
// ServletOutputStream ot=response.getOutputStream(); //也可以直接输出显示
FileInputStream in=new FileInputStream(ima);
JPEGImageDecoder jpgCodec = JPEGCodec.createJPEGDecoder(in);
BufferedImage image = jpgCodec.decodeAsBufferedImage();
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(ot);
encoder.encode(image);
in.close();
ot.close();
out.print("上传图片成功!<BR>");
//加载上传成功的图片
out.print("<IMG width=200 height=200 src='"+name+".jpg' />");
}
catch(Exception e)
{
System.out.print(e.toString());
}
%>

[align=left]15.java中常用的专业共享组件[/align]
[align=left]① Proxool连接池工具[/align]
他不仅实现了连接池的功能,而且有一个后端统计接口,可以很方便的了解连接池的使用情况,可以作为项目开发时测试使用,也可以为项目实际运行后为管理员提供访问情、连接情况等信息。
[align=left]②Javazoom的uploadbean文件上传组件[/align]
[align=left]项目中要求文件上传功能,如果要我们项目开发一个功能完善的文件上传组件,确实不是一件容易的事情。该组件不仅能将文件上传到服务器上也可将文件上传到数据库中,同时可对上传文件大小、类型进行控制。[/align]
[align=left]③JdonJive中的一些类型转换、表单接收等工具类[/align]
④jspSmartUpload 文件下载组件

16.打开新窗口之无法使用热键F11
<html>
<body onLoad=javascript:window.showModalDialog("setPass.aspx",window,"dialogWidth=350px;dialogHeight=240px;help=no;resizable=no;status=no;scroll=no")>
</body>
</html>

17.在线进销存管理系统
www.zydsoft.com

18.opcs 表结构
select a.a1 c1,a.yaopmc m1,a.a2 c2,b.yaopmc m2 from
(
select
left(tg_xhzy.zuoy1,11) a1,tg_trule.yaopmc,right(tg_xhzy.zuoy1,11) a2 from tg_xhzy,tg_trule
where tg_trule.yaopbm=left(tg_xhzy.zuoy1,11)
) a,tg_trule b
where b.yaopbm=a.a2
19.取当前路径的方法
String path = Request.getRealPath(“/”);//该方法过时
String path2 = session.getServletContext.getRealPath(“good.xsl”);

20.如果发布包不在tomcat/webapps下面
在server.xml里面配
<Context path="/tgjxc"
reloadable="true"
docBase="C:/javaexecute/TGJXCAPP/WEBTG"
workDir="C:/javaexecute/TGJXCAPP/bin">
</Context>

在</host>的上面配置

20.取今天的日期
import java.sql.* ;
[align=left] Timestamp ts = new Timestamp(new java.util.Date().getTime());[/align]
String today = ts.toString().substring(0, 10);

21.验证码的jsp实现
1.ACTIONSERVLET中实现验证码图形的绘制.
public class TestFormValue_Action extends Action {
public ActionForward perform(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
try{
response.setContentType("image/jpeg");
ServletOutputStream out = response.getOutputStream();

BufferedImage image = new BufferedImage(35, 14, BufferedImage.TYPE_INT_RGB);
Graphics gra = image.getGraphics();
gra.setColor(Color.yellow);
gra.fillRect(1, 1, 33, 12);
gra.setColor(Color.black);
gra.setFont(mFont);

///分别取4个随机数就OK了
char c = '1';
char c2 = '2';
char c3 = '3';
char c4 = '4';
String draw ="";
for (int i = 0; i < 4; i++) {
if(i==0){draw = String.valueOf(c);}
if(i==1){draw = String.valueOf(c2);}
if(i==2){draw = String.valueOf(c3);}
if(i==3){draw = String.valueOf(c4);}
gra.drawString(String.valueOf(draw), i * 7 + 4, 11);
}

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);

out.close();
}catch(Exception ex){
ex.printStackTrace();
}

return null;
}
2. jsp 中的调用
<img alt="" src="/tgjxc/testFormValue_Action.do" width="40" height="16"/>

22.IE模式对话框中的搜索
window.showModalDialog("<%=SysInitParam.CONTEXT_PATH%>/testViewAction.do",window,"dialogWidth:600px;dialogHeight:600px");

在弹出的对话框中的<head><base target="_self"></head>加上这一句话,
可以实现对话框的刷新.
对话框中的链结写法: <a href="" onclick="document.all.mya.href='testViewAction.do?search='+document.all.search.value" name="mya">搜索</a>
<a href=”” onclick=”document.all.mya.href=’testViewAction.do?search=’+document.all.search.value” name=”mya”搜索</a>
23.在没有form的页面调用表单里的值
<html>
<head>
<script language="javascript">
function myform(){
alert(document.all.mytext.value);

}
</script>
</head>
<body>
<input type="text" name="mytext"/>
<input type="button" onclick="myform();" />
</body>
</html>

24数据库中得一行数据得字段自动加1.
update bbscs_adv set url=url+1 where id = '1'

25.过滤.JSP页面 只能通过程序来转发 不能手动请求?????????????

[align=left]26. Timestamp ts = new Timestamp(new java.util.Date().getTime());[/align]
String today = ts.toString().substring(0, 10);

27.Hibernate 的取得连接类(基于线程的)

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

/**
* Configures and provides access to Hibernate sessions, tied to the
* current thread of execution. Follows the Thread Local Session
* pattern, see {@link http://hibernate.org/42.html}. */
public class HibernateSessionFactory {

/**
* Location of hibernate.cfg.xml file.
* NOTICE: Location should be on the classpath as Hibernate uses
* #resourceAsStream style lookup for its configuration file. That
* is place the config file in a Java package - the default location
* is the default Java package.<br><br>
* Examples: <br>
* <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml".
* CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code>
*/
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

/** Holds a single instance of Session */
private static final ThreadLocal threadLocal = new ThreadLocal();

/** The single instance of hibernate configuration */
private static final Configuration cfg = new Configuration();

/** The single instance of hibernate SessionFactory */
private static org.hibernate.SessionFactory sessionFactory;

/**
* Returns the ThreadLocal Session instance. Lazy initialize
* the <code>SessionFactory</code> if needed.
*
* @return Session
* @throws HibernateException
*/
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();

if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}

return session;
}

/**
* Close the single hibernate session instance.
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);

if (session != null) {
session.close();
}
}

/**
* Default constructor.
*/
private HibernateSessionFactory() {
}

}

28.jdk配置
classpath=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;
%JAVA_HOME%/lib/htmlconverter;

java_home=c:/jdk1.5

path=%JAVA_HOME%/bin;

29.常用工具
1. CVS cvsnt-2.5.03.2151.msi
2. My.Eclipse.Enterprise.WorkBench.v4.0.1只能使用于eclipse-SDK-3.1 full "Eclipse sdk" 版本
3. jdk classpath=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;
%JAVA_HOME%/lib/htmlconverter;
java_home=c:/jdk1.5
path=%JAVA_HOME%/bin;
4. Embarcadero DBArtisan Version 8.1.0(Build 3097) http://www.embarcadero.com 5. PL/SQL Developer Version 6.0.6.947 http://www.allroundautomations.com/plsqldev.html 6. PowerDesigner10
7. AllFusion ERwin DataModeler
8. oracle9i-9.2.0.1

30.oracle中删除与用户有关的表,索引等
drop user tgjxc cascade;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: