- 论坛徽章:
- 0
|
lesson 20 ant
1.tomcat和ant都不需要java_home
,还是那样,tomcat只需要设置jdk本身的设置即可.
2.ant的安装:
path变量需要安装.../ant/bin
即只需要自身的变量即可.
3.
:::显示红色的字,说明是系统默认字符不能改变,蓝色的字也是.
根据字体的颜色判断
还有:
一个简单的JMail Web实例
//自动设置了路径的信息.
//路径的联合效果.
//添加路径信息.注意这里不能使用
target list
init:make dir and copy file
compile: compile java file
copyjar:prepar jmail enviroment
deploy:deploy jmail web
clean:delete temp dir
4.activation.jar
mail.jar是在Javamail-1_2.zip 文件中,在java.sun下载.
5.利用ant打包到tocat/webapp下时,会自动生成相应的应用文件,这可能是系统自带的.
6.ant是为java而创建,可移植性的,make不能移植.
:在doc下,进入相应的目录输入ant,执行默认的build.xml的target.可以自己指定target和构建文件.
一般情况下,一个工程即一个build.xml.
:使用ant发布web应用.
:build.properties文件的书写
src.dir=./src,注意这是当前目录下,/
::在xml中一律用/,当然\也可以.
:build.xml的encoding不能为utf-8,应该改为GBK.!!!
:非常重要的一点,利用ant的javcac如果源文件是package cn.ac.ict形式,
而在编译的时候不需要批定-d,即会在指定的destdir下生成包文件.
:几种常的task元素
:
/
:
::注意,一定要确保classname的名字在其指定的classpath路径下,否则不成功.
:
:::的两种方式
:全局定义path,然后引用.
见上例
:
::注意
//不能两者混用,既嵌套,又设定内容是不行的.
//这种形式是不支持的.
7.build.properties:
配置文件,key=value没有引号,而且以#作为注释.
lesson21 log4j
1.用于日志管理
:几个关键的类,
logger日志写出器,
Appender,layout
2.两种配置方式,
:最简单的.properties
以log4j.开头,注意其格式.
:最流行的xml
固定的格式.
:实例
建立相应的servlet,并从web.xml中getInitParameter("..");
和配置文件.properties相结合的方式.
lessoon 11 ssi
1.ssi,服务端包含
是html页面中的指令,在页面被提供时由服务器进行运算,以对现有地HTML页面增加动态生成的内容,
而无须JSP程序提供其整个页面,或者其他动态技术.
:由服务器提供的一种功能
:在服务器端进行的.
:对于复杂的大型的动态网页,必须由asp,jsp搞定
:对于一些html页面上简单的动态功能,SSI轻松搞定.
:在服务端直接执行SSI会产生相应的HTML代码,所以对客户端没有限制,由流产器无关
2.主要的用途
:显示服务器环境变量
:将文本内容直接插入到文档中
:显示web文档相关信息
:直接执行服务器上的各种程序
:设置SSI信息显示的格式
3.echo
:大小写不分
显示当前文档的最后更新时间,相当实用的功能.
注意,只能写在注释中才能生效.
记住这样的固定格式.
4.include
:这个整个SSI的关键所在,它将文字或图片插入到当前被解析的文档中.
两个不同的参数
:virtual:给出到服务器端某个文档的虚拟路径,如
:file给出到当前目录的相对路径,其中不能使用../,也不能使用绝对路径
这要求每一个目录都包含一个header.html.
5.让tomcat支持SSI
修改web.xml,设置一个servlet即可.只要将相关的注释去掉即可.
::ssi命令只能在后缀名为shtml的文件中才能被正确执行,它与JSP命令不能同时被执行,
即它不能放在JSP文件中执行.
因为:从web.xml中的servletMapping中就可以看出.
::To use the SSI servlet, you also need to rename the
$CATALINA_HOME/server/lib/servlets-ssi.renametojar file
to $CATALINA_HOME/server/lib/servlets-ssi.jar
lesson12 中文显示
:::::html不会有这样的问题,它不需要TOM的参与!!!!!
1. javac -encoding指定源程序的编码格式.
2.java的编译过程
如果没有javac -encoding形式指定源程序的编码方式,则javac首先利用file.encoding获得系统的编码方式
如GBK;JDK将源程序从File.encoding格式转化为内部的unicode放在内存中.这样.class就是unicode格式,
存放在内存中;操作系统中存在的.class即为unicode编码格式的;java时,将再次使用file.encoding输出.
3.jsp的编译过程:与上述稍有不同
:tomcat首先调用JSP编译器
:JSP编译器先查看JSP文件中是否设有编码格式,如果没设,则它调用JDK先把JSP文件用JVM默认的编码格式
即WEB窗口所在的操作系统默认的file.encoding,转换为临时的servlet类,然后把它编译成UNICODE格式的
class类,并保存在临时的文件夹下.
:客户请求时,JVM则在内在中运行servlet类,如果它在运行中接收用户的字符如表单的输入,URL参数等,
如果程序中没有指定编码格式,则TOM采用iso8859-1,然后转化为UNICODE在内存中,servlet运行后输出,
输出的字串(string)是UNICODE的.TOM将这个字串发送给客户的流产器,如果指定(page)发送时编码则按指定的,
如果没有,则IOS88..
因此要注意三点:
设置JSP的编码格式
设定接收参数的编码格式
设定响应时的编码格式.
4.实例
:JSP页面的乱码(JSP页面本身的中文字符)
原因:以默认的file.endoing即GBK编码为servelt,.class,输出时为iso格式.所以不匹配.
一个很好的例子.
解决:
注意:这从而也指定了输出HttpservletResponse的编码格式.
即指定了所有向该JSP页面的输出数据的编码格式.
.
:表单提交时的乱码即,request.getParameter()方法得到乱码.
原因:对POST方法,处理参数时采用默认的ISO
解决:对POST方法提交的表彰通过编写一个过滤器GBK
GET方法:
在server.xml下
::这样在JSP页面必须指定相应的编码格式!!!
个人验证:对于post方法,可以采用request.setCharacterEncoding("gb2312");
方法搞定,这种方法比较简单.
:数据库:
方法一:
MYsql,my.ini文件,
[mysqld]下的语句default-character-set=latin1
变为gbk
在[client]下增加default-character-set=gbk
方法二:
MY不支持UNICODE
字符编码知识::
utf-8:并不能显示中文,中文以方框显示了.
response.getCharacterEncoding():返回值如果没有指定编码则返回ISO..
request.getCharacterEncoding():如果没有指定则返回null
:补自动转换为字串,显示为10.
class EncodeTest
{
public static void main(String[] args) throws Exception
{
String a ="碁";
//a.getBytes()利用平台的gbk编码.
String b = new String(a.getBytes(),"ISO8859_1");
//这时候c就是gb2312编码的,输出即可.
String c = new String(a.getBytes(),"gb2312");
System.out.println("b="+b+" c="+c);
//因为b已经是iso编码的,这时用iso编码,然后再用gbk解码
String bb = new String(b.getBytes("ISO8859_1"),"GBK");
//采用平台默认gbk进行解码字节数组.
String bbb = new String(b.getBytes("ISO8859_1"));
//因为a是gbk解码,用gb编码,再用gbk解码.
String cc = new String(a.getBytes("gb2312"),"GBK");
System.out.println("bb="+bb+" cc="+cc+"bbb="+bbb);
//用iso编码放在内存,输出时用默认的gbk解码.所以不显示.
//a是gbk解码,现在iso编码,所以这个式子无论用什么解码都不显示.
String d=new String(a.getBytes("ISO8859-1"));
String dd=new String(a.getBytes("iso8859-1"),"gbk");
System.out.println("d="+d+"dd="+dd);
//解决办法就是没有办法,因为d本身就不能显示!!
String ddd=new String(d.getBytes("gbk"),"gbk");
System.out.println(ddd);
}
}
这个例子说明:ISO8859_1是个比较特殊的字符集,它是一个8位的编码,
这就让他成为一个非常好的中介机构,会忠实的将每个字节的数据记录下来而不改变,
估计这是web传输和jdbc传输使用它为字符集的原因吧。
*****************最重要的部分**********
记住:解码与编码的方式一样要相同!!!!!!
:一个字串本身的编码是什么,能不能正常显示!!
如
getBytest(iso)就是编码,后者就是解码!!!
request.getParameter("name").getBytes("ISO8859_1")得到的就是字串初始的编码.
如果初始编码是iso那么显然不能显示中文.
:mysql的默认编码是iso,指的就是字串的最后解码是iso,比如操作系统的默认编码是GBK
,就是说在其下输入"好",那么就等价于:new string("好".getBytes("gbk"),"gbk")
:request.getParameter("name")等价于:
name是gbk(输入时的系统)编码,new String(name.getBytes("gbk"),"iso")
这里的iso就是tomcat默认指定的.也就是书中所说的NUCODE字串
****************************************
问题:::
JSP页面中的代码如表达式代码,如果是易发生异常的,是否要加以捕获.
在数据库一章中,在代码段是要trycatch的.但这里的getBytes()表达式却没有声明(JSP中)??
个人:基于表达式的长相,不容易捕获,所以就不用了.
在代码段中,经验证也不需要,这说明jsp程序毕竟不是java源程序,要求不严格,因为它只是
TOM自动调用jsp编译器.
:Unicode 也是一种字符编码方法,不过它是由国际组织设计,
可以容纳全世界所有语言文字的编码方案。
Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS。
UCS可以看作是"Unicode Character Set"的缩写。
:UCS规定了怎么用多个字节表示各种文字。
怎样传输这些编码,是由UTF(UCS Transformation Format)规范规定的,
常见的UTF规范包括UTF-8、UTF-7、UTF-16
:所以从汉字包含来看,简单地可以说:
GB2312=ASCII+常用汉字+符号
GBK=GB2312+不常用字(含BIG5繁体汉字)+图形符号
GB18030=GBK+Ext-A+图形符号
Unicode=GB18030+Ext-B+……(如未发布的Ext-C及其它国家文字)
注意:Unicode的汉字编码与前三者不一样
lesson 25 tocmat与hibername
1.hibernate
:是一个面向java环境的对象/关系数据库映射工具,对象/关系数据库映射(orm),这个术语表示一
种技术,用来把对象模型表示的对象映射到基于SQL的关系型数据结构中.
2.
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/32621/showart_256233.html |
|