1. 部署并启动 tomcat 服务器.
1). 解压 apache-tomcat-6.0.16.zip 到一个非中文目录下
2). 配置一个环境变量. java_home(指向 JDK 安装的根目录) 或 jre_home
3). 通过双击 apache-tomcat-6.0.16\bin 目录下的 startup.bat, 启动服务器
4). 可以在浏览器中输入 localhost:8080 来检验 Tomcat 安装是否正确.
5). 若已经启动了一个 Tomcat 应用, 若再启动同一个 Tomcat 应用, 会抛出异常:
java.net.BindException: Address already in use: JVM_Bind:8080
因为端口已经被占用了.

2. Tomcat: 开源的 Servlet 容器.

3. 可以通过修改 server.xml 文件中的配置信息来修改 Tomcat 服务器的端口号:

<Connector port="8989" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

把 port 的值改为其他的端口号即可.

4. 为了可以在任意目录下启动 Tomcat 服务器
4.1 把 D:\apache-tomcat-6.0.16\bin 添加到 path 下

添加成功后, 若在任意目录下通过 startup 启动 Tomcat 服务器, 会有提示:

The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program

即: 要求设置 CATALINA_HOME 这个环境变量

5. 设置 CATALINA_HOME 环境变量:
5.1 通过阅读 startup.bat 批处理文件, 可知 CATALINA_HOME 环境变量下有一个 bin 目录,
而 bin 目录又有一个 catalina.bat 文件, 由此可知 CATALINA_HOME 指向的应该是 Tomcat
安装的根目录

于是把 Tomcat 的根目录设为 CATALINA_HOME 环境变量.

此时即可以在 任意 目录下通过 startup.bat、shutdown.bat 启动、关闭 Tomcat 服务器.

6. 继续阅读 startup.bat 文件, 发现启动 tomcat 服务器的是 catalina.bat 文件

在命令行窗口直接输入 catalina, 提示如下:

commands:
debug Start Catalina in a debugger
debug -security Debug Catalina with a security manager
jpda start Start Catalina under JPDA debugger
run Start Catalina in the current window
run -security Start in the current window with security manager
start Start Catalina in a separate window
start -security Start in a separate window with security manager
stop Stop Catalina
version What version of tomcat are you running?

catalina 命令有如上的可选参数.

run: 在 catalina 同一个命令行窗口下启动服务器.
start: 开启一个新窗口启动服务器
stop: 关闭服务器.

7. 第一个 WEB 应用程序: 开发, 并部署到 Tomcat 服务器下运行

1). 在 Eclipse 新建一个 Java Project
2). 在 Java 项目下创建 WEB 开发的目录结构

-WebContent
-WEB-INF
-classes (编译后的 class 文件必须放在该目录下.)
-lib
-web.xml (从 apache-tomcat-6.0.16\webapps\docs\WEB-INF 中复制过来,
可以不做修改)
html 页面
JSP 页面
图片...

3). 在 src 下新建一个 Person 类

package com.atguigu.test;

public class Person {

public String getPersonInfo(){
return "person info...";
}

}

4). 手工的 Person 类对应的 class 文件(含包)复制到 classes 目录下

可以通过修改默认的输出目录达到自动把编译好的 class 放到 classes 目录下:

5). 在 WebContent 目录下新建一个 JSP 文件:

<%@page import="com.atguigu.test.Person"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<%
Person person = new Person();
System.out.print(person.getPersonInfo());
%>

6). 把 WebContent 目录复制到 Tomcat 的 webapps 目录下, 并改名为: helloworld

7). 在浏览器的地址栏中输入: http://localhost:8989/helloworld/hello.jsp 即可
看到命令行的打印信息

8). 配置任意目录下的Web应用程序:
在 conf 目录下依次创建 catalina\localhost 目录,然后在 localhost 目录下为 test
这个Web应用程序建立 test.xml 文件,编辑这个文件输入以下内容

<?xml version="1.0" encoding="UTF-8"?>
<Context
docBase="E:\\Java\\Source\\atguigu\\java-1\\firstWebApp\\WebContent"
reloadable="true"/>

J2EE笔记2的更多相关文章

  1. J2EE笔记

    J2EE的优势 J2EE允许公司把一些通用的.很繁琐的服务端任务交给中间件供应商去完成.这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间.高级中间件供应商提供以下这些复杂的中间件服务 ...

  2. J2EE笔记3

    7. MVC 设计模式. 6. 和属性相关的方法: 1). 方法 void setAttribute(String name, Object o): 设置属性 Object getAttribute( ...

  3. 从头学一次J2EE笔记

    1.在Servlet3.5规范之前,Java Web 应用的绝大部分组件都通过web.xml 文件来配置管理, Servlet3.0 规范可通过Annotation来配置管理Web组件,因此web.x ...

  4. J2EE进阶(一)随堂笔记

    进公司搞研发,基本上用的都是J2EE框架.若想在公司混个不错的地位,首先技术上必须过关.由于需求所致,自己学习了J2EE一段时间,主要是Struts2,MyBatis(Hibernate的前身),远远 ...

  5. J2EE学习笔记-第二章(Web应用初步)

    首先要理解一些概念的词语,到底这些是什么(当我读懂了后,会逐一填补完整,现在我真的有点混淆) web组件-相当于功能性的组件,就像是零件,汽车的轮胎,汽车的门,所有组件组合后,才能成为一辆车,有时候也 ...

  6. j2ee学习笔记 Filter过滤器

    作用:过滤response和request对象的内容 使用: Filter是J2EE的一个接口,自定义Filter需要实现该接口,并重写所有的方法. Filter提供的方法: init() doFil ...

  7. 23种设计模式+J2EE设计模式学习笔记-初识设计模式

    设计模式简介: 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.(个人理解:设计模式是不关乎业务,逻辑实现,针对普遍问题的一种解决方案). 设计模式的类型: 传统23种设 ...

  8. <J2EE学习笔记>关于Servlet的讲义

    题外话:接触java又是半年之前的事情了,当初好好学了java却把cpp给忘了,到现在又把手里发热的cpp给放下重新捡起来java,究竟这两种OOP语言我能不能清晰分开记住呢 以下全部课件来自于同济大 ...

  9. j2ee开发之Spring2.5框架学习笔记

    Spring 2.5框架学习笔记 1.是一个开源的控制反转IOC和面向切面AOP的容器框架 2.IOC控制反转 public class PersonServiceBean { private Per ...

随机推荐

  1. 【GOF23设计模式】装饰模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_装饰模式.IO流底层架构.装饰和桥接模式的区别 package com.test.decorator; /** * Com ...

  2. 为七牛云存储开发的PHP PEAR 包:Services_Qiniu

    七牛云存储Qiniu Resource (Cloud) Storage:用于存储图片.apk等静态资源. 优点: 1.使用七牛带宽和CDN,速度快,不占用开发者服务器. 2.支持图片任意格式.任意分辨 ...

  3. PHP控制前台弹出对话框

    应用场景: 微信授权登录过程中,需要用户确认,故衍生此需求: 相应的逻辑不放在前端的原因是,此部分逻辑属于偏功能业务,所以放在后端,方便统一管理. 解决办法: 通过php echo出javascrip ...

  4. javascript宿主对象之window.frames

    window.frames属性是当前页面所有框架的集合.要注意的事,这里并没有frame和iframe做出区分.而且,无论页面存不存在框架,window.frames属性总是存在的,并总是指向wind ...

  5. Virtual DOM 算法

    前端 virtual-dom react.js javascript 目录: 1 前言 2 对前端应用状态管理思考 3 Virtual DOM 算法 4 算法实现 4.1 步骤一:用JS对象模拟DOM ...

  6. 被混淆的C#类库的反编译

    今天看公司以前的代码,用的是.NRT Reactor v4.4.7.5进行的混淆,直接使用.NET Reflector v8.5.0.179 是无法查看的,提示:Invalid number of d ...

  7. MYSQL使用正则表达式过滤数据

    一.正则与LIKE的区别 Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符.字符串.例如:select * from wp_posts where post_name REGEXP ...

  8. iOS之Cookie

    iOS之Cookie使用 简介 概念:Cookie中文名称叫做"小型文本文件",指某些网站为了辨别用户身份而存储在用户本地终端上的数据(通常经过加 密). Web服务器可以用过Se ...

  9. 多选按钮(CheckBox)

    今天我们介绍的是Checkbox多选框: 1.Activity //复选框,[基础控件]---状态切换控件CompoundButton及其子类CheckBox.RadioButton.ToggleBu ...

  10. html 关于内部是float元素的外部div高度为0的解决方法!

    最近编写一个页面的时候遇见一个问题,外部div是block的,而内部元素是float的,大家应该都知道float的元素是没有实际高度的,就算你设置了float元素的高度他也不会撑开外部block元素的 ...