Tomcat下建立虚拟目录
例: 建立目录 d:\testWeb 在其中建立一个WEB-INF文件夹 然后:从Tomcat目录中\webapps\ROOT\WEB-INF 复制web.xml到d:\testWeb\WEB-INF 删除 与之间的内容 最后:配置Tomcat目录下\conf\server.xml文件 , 在最后上添加 <context path="/test" docbase="d:/testWeb"></context> 重启Tomcat服务器,便可通过http://localhost:8080/test/访问虚拟目录的站点了....
application对象
与session类似,也是用来保存信息,实现在不同页面的参数传递;但application实所有
用户共享的,任何用户都可以访问,而session对象则是每个用户私有的.
application 属于javax.servlet.ServletContext 包中 应用
得到工作目录的真实路径
在实际应用中一半用getServletContext() 代替 application 调用
JSP安全性及config对象的应用:
在J2EE中安全性体现:工作目录的WEB-INF文件夹
如果能够将一个页面保存在WEB-INF文件夹下,安全性高不高?
但是页面无法发现
解决一个问题:使页面能够被用户访问
解决方法:在WEB-INF文件夹之下存在一个web.xml文件
web.xml文件:属于整个web站点的配置文件
与
增加以下配置内容
- <servlet>
- <servlet-name>mldnservlet-name>
- <jsp-file>/WEB-INF/hello.jspjsp-file>
- servlet>
- <servlet-mapping>
- <servlet-name>mldnservlet-name>
- <url-pattern>/lxhurl-pattern>
- servlet-mapping>
此文件一旦被修改之后,必须重新启动服务器 -- 因为服务器在启动的时候会读取此文件
config对象
-- config对象一般用于取得服务器的初始化配置参数,但若要使用此对象应在WEB-INF/web.xml中配置
要使用config前提:JSP页面必须在web.xmlzhong进行配置
如果要取得这些初始化参数,必须通过映射名称进行访问JSP页面,才可以取得初始化参数,就通过
config对象取得.
查找J2EE稳定:config对象:javax.servlet.ServletConfig
取得初时化参数的方法:public String getInitParameter(String name)
通过此功能,可以将数据库连接的一些信息写在配置文件之中 --- JDBC程序的时候
public Enumeration getInitParameterNames() 与request.getParameterNames()方法类似,是
取得全部配置参数信息
默认首页设置
修改web.xml文件:Tomcat5.0\conf\web.xml
- <welcome-file-list>
- <welcome-file>index.htmlwelcome-file>
- <welcome-file>index.htmwelcome-file>
- <welcome-file>index.jspwelcome-file>
- welcome-file-list>
********************************面试中常见问题*******************************
两种inlclude的区别
--静态的包含页面:不管其文件内容如何只是将页面中的内容包含进来
--执行时:先将所有内容包含进来一起处理完之后再将所有的内容发送给客户端
--动态包含页面:能自动区分所包含的是静态还是动态页面
--执行时:
-如果资源为静态资源则直接将资源包含处理与 相同
-如果请求资源为动态,则先各自处理资源,之后将处理后的结果包含在一起
: 所有代码包含进来之后,一起进行处理,把所有代码合在一起
: 所有代码分别处理,处理完成之后再将代码的显示结果(处理结果)包含进来
*****************************************面试中常见问题************************
两种跳转的区别
1
-地址栏不改变跳转 ----服务器端跳转
-执行到跳转语句后无条件立刻跳转 ---- 之后的代码不再执行
-注意:如果使用forward跳转,则一定要在跳转之前释放掉全部的资源
-使用forward时,request设置的属性依然能保留在下一个页面(setAttribute)
-通过传递参数
2 reponse.sendRedirect("地址");
-地址栏改变跳转 ---- 客户端跳转
-所有代码执行完毕之后再跳转
-不能保存request属性 ---- 地址改变了,客户端跳转
-通过对URL地址的重写传递参数
动态web最大特点是--->可以操作数据库
JSP属于动态web站点--->通过JDBC操作数据库
JDBC ----- Java DataBase Connectivity
java数据库连接技术的简称.JDBC也是java用于访问数据库的一套标准
API,于java语言编写的一组类与接口组成
JDBC 本身是JAVA连接数据库的一个标准
数据库管理系统
使用数据库之中,可以发现,对数据的处理由数据库管理系统去完成,而程序只是将需要
的数据进行显示
JDBC:是java操作数据的方法,是sun提供的
ODBC:是微软操作数据库的连接方法
比较: ODBC支持的数据库类型多
JDBC基于Java跨平台特性,移植性好
JDBC-ODBC bridge --- 将JDBC访问指令转换成ODBC指令
JDBC-native driver bridge --- JDBC访问转成数据库驱动程序,在客户端的API直接完成对数据
库的操作.这类驱动程序需要在每台客户机上预先安装,使用和维护不方便
JDBC-network bridge --- 将JDBC访问转换成与数据库无关的网络协议送出,然后由一个中间服务器再将之转换成特定数据库的访问指令
JDBC-ODBC bridge :使用ODBC提供的数据库连接技术访问数据库,在开发中此方法肯定不用,因为性能较低
JDBC驱动连接:是由各数据库生产厂家提供
JDBC-ODBC是在JDK中由SUN本身开发出来的一套数据库访问操作,在JDBC-ODBC桥接中
它的操作API都是最新的,但是性能不高
JDBC连接:所有的驱动程序要由各个数据库生产厂商提供
- <%@ page contentType="text/html;charset=gb2312"%>
- <%@ page import="java.sql.*"%>
- <%!
- // 定义数据库驱动程序
- String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;
- // 定义数据库连接地址
- String DBURL = "jdbc:odbc:mldn" ;
- // 定义数据库连接对象,属于java.sql包中的接口
- Connection conn = null ;
- // 定义Statement对象,用于操作数据库
- Statement stmt = null ;
- // 定义一字符串变量,用于保存SQL语句
- String sql = null ;
- %>
- <%
- // 1、加载驱动程序
- try
- {
- Class.forName(DBDRIVER) ;
- }
- catch(Exception e)
- {
- // 此处使用out.print是处于演示目的,在实际开发中所有的错误消息,绝对不能够通过out.print打印,否则会存在安全问题
- out.println("数据库驱动程序加载失败!!!") ;
- }
- // 2、连接数据库
- try
- {
- conn = DriverManager.getConnection(DBURL) ;
- }
- catch(Exception e)
- {
- out.println("数据库连接失败!!!") ;
- }
- // 3、操作数据库
- // 通过Connection对象实例化Statement对象
- try
- {
- stmt = conn.createStatement() ;
- // 为sql变量赋值
- // 插入语句
- sql = "INSERT INTO person (name,password,age) VALUES ('LXH','zzzzzz',28)" ;
- // 更新语句
- // sql = "UPDATE person SET name='李兴华',password='www.mldn.cn' WHERE id=3" ;
- // 按ID删除记录
- // sql = "DELETE FROM person WHERE id=4" ;
- // 通过Statement对象执行此SQL语句
- stmt.executeUpdate(sql) ;
- }
- catch(Exception e)
- {
- out.println("操作数据库失败!!!") ;
- }
- // 4、关闭数据库
- try
- {
- // 关闭操作
- stmt.close() ;
- // 关闭连接
- conn.close() ;
- }
- catch(Exception e)
- {
- out.println("数据库关闭失败!!!") ;
- }
- %>