一、JAVAEE规范(servlet规范)-jdk环境变量的配置
1、Servlet和Applet的简单理解:
1) 理解1:Servlet 通过创建一个框架来扩展服务器的能力,以提供在web上进行请求和相应服务,当客户机发送请求到服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应,当启动web服务器或者客户机第一次请求服务时,可以自动装入Servlet,装入后,Servlet继续运行直到其他客户机发出请求,Servlet的功能涉及的范围很广。
备注:sun公司制定的JavaEE规范即servlet规范; servlet规范有原码、有字节码、有api帮助文档; Servlet接口是servlet规范中核心接口
理解2:tomcat(服务器) 和servlet(sun公司的接口)这些都是已存在。javaweb程序员只需要做:A、写一个类实现接口(sun公司提供的接口),B、把这个类和路径写到配置文件中。tomcat是一个开放源代码的软件,而且这个软件实现了java Servlet规范和jsp(JavaServletPages)规范原码是无法直接运行的,运行的都是编译之后的Class文件
2) Applet含有Applet的网页的HTML文件代码中部带有<applet> 和</applet>这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Netscape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。
2、Tomcat的安装及配置
1) JDK环境变量的配置:
新建系统环境变量:JAVA_HOME D:\Program Files\jdk
新建用户环境变量:CLASS_PATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
查找系统环境变量:Path %JAVA_HOME%\bin;
2) Tomcat环境变量的配置:
新建系统环境变量:CATALINA_HOME D:\Program Files\tomcat7
备注:Tomcat解压后即可使用,无需进行安装
3) Eclipse中配置tomcat:
window--Preferences--Server--Runtime Enviroment--add :选择适合版本号,然后找到tomcat安装的目录D:\Program Files\tomcat7
4)dt.jar/tools.jar/rt.jar包的区别
dt.jar:
1)是关于运行环境的类库
2)位于:{Java_Home}/lib/下
3)dt.jar是关于运行环境的类库,主要是swing的包 在用到swing时最好加上。
tools.jar:
1)是工具类库,编译和运行需要的都是toos.jar里面的类分别是sun.tools.java.*; sun.tols.javac.*;
2)位于:{Java_Home}/lib/下
javac XXX.java 实际上就是运行 java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java
javac就是对上面命令的封装 所以tools.jar 也不用加到classpath里面
rt.jar:
1)是JAVA基础类库,也就是你在java doc里面看到的所有的类的class文件,
2)位于:{Java_Home}/jre/lib/下
3)默认就在Root Classloader的加载路径里面的,
而在Claspath配置该变量是不需要的;同时jre/lib目录下的 其他jar:jce.jar、jsse.jar、charsets.jar、resources.jar都在Root Classloader中
5) 环境变量path与classpath的区别:
环境变量path:
path是系统用来指定可执行文件的完整路径,即使不在path中设置JDK的路径也可执行Java文件,但必须把完整的路径写出来,如C:\Program Files\Java\jdk1.6.0_10\bin\javac HelloClass.java。path是用来搜索所执行的可执行文件路径的,如果执行的可执行文件不在当前目录下,那就会依次搜索path中设置的路径;而java的各种操作命令是在其安装路径中的bin目录下,所以在path中设置了JDK的安装目录后就不用再把java文件的完整路径写出来了,它会自动去path中设置的路径中去找;
环境变量classpath
classpath是指定你在程序中所使用的类(.class)文件所在的位置,就如在引入一个类时:import javax.swing.JTable这句话是告诉编译器要引入javax.swing这个包下的JTable类,而classpath就是告诉编译器该到哪里去找到这个类(前提是你在classpath中设置了这个类的路径);如果你想要编译在当前目录下找,就加上“.”,如:.;C:\Program Files\Java\jdk\,这样编译器就会到当前目录和C:\Program Files\Java\jdk\去找javax.swing.JTable这个类;还提下:大多数人都是用Eclipse写程序,不设classpath也没关系,因为Eclipse有相关的配置;
3、Eclipse中创建标准web工程以及标准目录结构说明
引用:http://www.cnblogs.com/sdjnzqr/p/3816899.html
4、|获取web.xml文件中的初始化参数、Servlet的名字(在<servlet-name>名字<serlvet-name>)、ServletContext|
初始化参数、servletname、servletcontext--->均是通过ServletConfig来获取
web.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>prj-servlet04</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>a</servlet-name> <servlet-class>com.bjpowernode.java.web.servlet.Aservlet</servlet-class> <!--初始化参数:被封装到ServletConfig对象中--> <init-param> <param-name>driver</param-name> <param-value>oracle.jdbc.driver.OracleDriver</param-value> </init-param> <init-param> <param-name>url</param-name> <param-value>jdbc:oracle:thin:@10.125.4.55:1521:orcl</param-value> </init-param> <init-param> <param-name>user</param-name> <param-value>system</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>zjb</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>a</servlet-name> <url-pattern>/a</url-pattern> </servlet-mapping> <servlet> <servlet-name>b</servlet-name> <servlet-class>com.bjpowernode.java.web.servlet.Bservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>b</servlet-name> <url-pattern>/b</url-pattern> </servlet-mapping> </web-app>
index.html文件:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="/prj-servlet04/a">AServlet</a> <a href="/prj-servlet04/b">BServlet</a> </body> </html>
Aservlet.java
package com.bjpowernode.java.web.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class Aservlet implements Servlet { private ServletConfig config; @Override public void init(ServletConfig config) throws ServletException { //在初始化配置文件的时候就可以获取 ServletConfig this.config=config; System.out.println("Aservlet's ServletConfig="+config.toString()); /*输出结果为: org.apache.catalina.core.StandardWrapperFacade@95d74aAServlet和BServlet类是放在tomcat服务器里面, 所以输出结果是tomcat里面的*/ } @Override public ServletConfig getServletConfig() { return config; } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out=res.getWriter(); System.out.println(config); //获取初始化参数的name Enumeration<String> names=config.getInitParameterNames(); while(names.hasMoreElements()){ String name=names.nextElement(); String value=config.getInitParameter(name); out.println(name+"="+value); out.println("<br>"); } //获取Servlet name String servletName=config.getServletName(); out.println("<servlet-name>"+servletName+"</servlet-name>"); //获取Servlet context ServletContext application=config.getServletContext(); out.print(application.toString()); System.out.println(application.toString()); /* //通过初始化参数的名字获取value String driver=config.getInitParameter("driver"); String url=config.getInitParameter("url"); String user=config.getInitParameter("user"); String password=config.getInitParameter("password"); //将其输出到浏览器 out.println(driver); out.println(url); out.println(user); out.println(password); */ } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void destroy() { // TODO Auto-generated method stub } } Bservlet.java package com.bjpowernode.java.web.servlet; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class Bservlet implements Servlet { @Override public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub System.out.println("Bservlet's ServletConfig=" + config.toString()); } //这个方法时供子类使用的,在子类中若想获取ServletConfig,可以调用这个方法; @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void destroy() { // TODO Auto-generated method stub } }
5、如何实现不同版本jdk的切换
1)准备两个版本的jdk我的两个jdk路径为:
C:\Program Files\Java\jdk1.6.0_43
C:\Program Files\Java\jdk1.8.0_25
2) 设置两个子JAVA_HOME,一个总设置两个子JAVA_HOME:
JAVA_HOME6 = C:\Program Files\Java\jdk1.6.0_43
JAVA_HOME8 = C:\Program Files\Java\jdk1.8.0_25
3)此处JAVA_HOME设置即为你更换jdk版本是所要修改的地方
JAVA_HOME = %JAVA_HOME6%
4)设置path
添加如下内容(注意添加’;’);%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
5) 添加classpath变量 变量值
%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
6) 查看版本是否更换成功
java -version
javac -version
若未成功,请看接下来的6
7)未成功解决方案
删除C:\Windows\System32目录下的java.exe,删除即可。
若java -version和javac -version版本不一致。
将%JAVA_HOME%\bin加在PATH变量的头,执行java -version和javac -version,版本已然一致。
备注:该文件夹中的java.exe就是C:\Windows\System32 目录下面被删除的java.exe文件

浙公网安备 33010602011771号