一、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>
View Code

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>
View Code

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

 }
}
View Code

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文件
View Code

 

posted @ 2017-01-05 09:20  爱笑的berg  阅读(411)  评论(0)    收藏  举报