[原创]对于JSP/Servlet/JDBC的学习
JSP的中文乱码问题
(1)JSP与页面参数之间的乱码:
JSP页面可以用下面语句来设置编码:<%@ page contentType="text/html; charset=UTF-8"%>、<%@ page pageEncoding="UTF-8"%>。JSP获取页面参数时一般采用默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很有可能就会出现乱码。解决的方法是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("UTF-8")。
(2)Java与数据库之间的乱码:
解决Java与数据库之间的乱码问题比较明智的方法是直接使用Unicode编码与数据库进行交互。如果乱码是源自数据库自身的,那第一步查询安装时字符集设置是否正确;第二步:检查客户端字符集设置是否正确;最后修改Oracle enterprise manage中的一个名为dbappscf.properties的配置文件,去掉注释符#,同时将其修改为SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK.
(3)Java与文件/流之间的乱码:
在读写字符文件时一般使用基于字符的FileReader和FileWriter,但这两个类的构造函数默认使用系统使用的编码方式,如果文件内容与系统的编码方式不一致,就可能出现乱码。这时建议使用它们的父类:InputStreamReader/OutputStreamWriter,它们在构造函数中可以指定编码类型:InputStreamReader(InputStream in,Charset cs)和OutputStreamWriter(OutputStream out,Charset cs).
(4)如果还是出现乱码,需要手动进行转码,通过调用类方法进行编码方式的转换。
Servlet生命周期分为三个阶段:
1,初始化阶段 调用init()方法
2,响应客户请求阶段 调用service()方法
3,终止阶段 调用destroy()方法
Servlet工作原理:
Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet,doPost等等这些方法的,HttpServlet中定义了这些方法,但是都是返回error信息,所以,每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。
每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。
Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest,ServletResponse强转为HttpRequest和HttpResponse。
Servlet与JSP的比较:
有许多相似之处,都可以生成动态网页。
JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。
Servlet是纯Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。
JDBC是一个标准的Java API,用于在一个统一的平台中以供应商无关的方式访问数据库。Java应用程���可以使用JDBC作为驱动访问数据库,执行SQL语句。通俗来讲,JDBC就是Java应用程序访问数据库的驱动。
Weblogic的JDBC配置中主要包括连接池和数据源两部分。到了9版本后,将连接池的配置包含进了Data Source的配置中。
在Weblogic控制台中创建数据源:在域结构中选择服务->JDBC->数据源->新建,可以选择数据库的类型,数据库名称,主机名,驱动程序类名称,URL等。
Weblogic中访问oracle数据库的连接池可以采用三种JDBC方式进行配置:
1.weblogic 方式, 使用weblogic的jDriver
属性 值
URL : jdbc:weblogic:oracle
Driver Classes : weblogic.jdbc.oci.Driver
Properties (key=value): user=xixi
password=haha
server=your_tnsname
需要安装oracle的客户端
2. oracle JDBC的thin方式
属性 值 URL : jdbc:oracle:thin:@193.0.0.5:1521:ora8
Driver Classes : oracle.jdbc.driver.OracleDriver
Properties (key=value): user=xixi
password=haha
dll=ocijdbc8
protocol=thin
不需要安装oracle的客户端 , ora8为你要连接的数据库的SID
3.Oracle JDBC的OCI8方式
属性 值
URL : jdbc:oracle:oci8:@your_tns
Driver Classes : oracle.jdbc.driver.OracleDriver
Properties (key=value): user=xixi
password=haha
dll=ocijdbc8
protocol=oci8