【JavaEE WEB 开发】Tomcat 详解 Servlet 入门
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/47146817
一. Tomcat 下载安装配置
1. Tomcat 下载
Tomcat 下载 :
-- 下载地址 : http://tomcat.apache.org ;
-- 下载页面 :
-- 下载对应平台的版本 : 有 MAc/Linux 平台, Windows 平台的服务器软件;
2. Tomcat 运行 (Linux/Mac 环境)
Tomcat 运行 (Mac/Linux) :
-- 进入 Tomcat 安装目录 :
localhost:apache-tomcat-6.0.44 octopus$ pwd /Users/hanshuliang/develop/apache-tomcat-6.0.44 localhost:apache-tomcat-6.0.44 octopus$ ls LICENSE RELEASE-NOTES bin lib temp work NOTICE RUNNING.txt conf logs webapps localhost:apache-tomcat-6.0.44 octopus$
-- 进入 bin 目录 :
localhost:apache-tomcat-6.0.44 octopus$ cd bin/ localhost:bin octopus$ ls bootstrap.jar cpappend.bat shutdown.bat tool-wrapper.bat catalina-tasks.xml daemon.sh shutdown.sh tool-wrapper.sh catalina.bat digest.bat startup.bat version.bat catalina.sh digest.sh startup.sh version.sh commons-daemon-native.tar.gz setclasspath.bat tomcat-juli.jar commons-daemon.jar setclasspath.sh tomcat-native.tar.gz
-- 执行启动命令 : 特别注意, 需要使用 root 权限启动, 否则会报出权限错误, 使用命令 sudo ./startup.sh ;
localhost:bin octopus$ sudo ./startup.sh Using CATALINA_BASE: /Users/hanshuliang/develop/apache-tomcat-6.0.44 Using CATALINA_HOME: /Users/hanshuliang/develop/apache-tomcat-6.0.44 Using CATALINA_TMPDIR: /Users/hanshuliang/develop/apache-tomcat-6.0.44/temp Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home Using CLASSPATH: /Users/hanshuliang/develop/apache-tomcat-6.0.44/bin/bootstrap.jar
-- 查看是否启动 : 打开浏览器, 输入 localhost:8080 网址, 查看是否出现 Tomcat 页面;
3. Tomcat 运行 (Windows 环境)
Tomcat 运行 (Windows) :
-- 进入 Tomcat 安装目录 :
-- 进入 bin 目录 : 启动 startup 可执行程序;
-- 浏览器验证 : 在浏览器输入 http://localhost:8080/ 网址, 出现以下界面即配置正确;
3. Tomcat 错误排除
(1) 启动闪退问题
启动闪退 : 没有配置 JAVA_HOME 环境变量, 使用 Tomcat 时, 必须配置 JAVA_HOME 环境变量;
-- 闪退原因 : tomcat 启动后, 会查找 JAVA_HOME 环境变量, 之后还会查找 CATALINA_HOME 环境变量 (Tomcat 根目录), CATALINA_HOME 这个变量建议不设置;
(2) CATALINA_HOME 配置出现问题
CATALINA_HOME 问题 : 不建议配置 CATALINA_HOME 环境变量;
-- 配置 CATALINA_HOME 出现的问题 : 如果有多个 Tomcat, 在任意 Tomcat 中启动, 只会启动 CATALINA_HOME 指定的 Tomcat 目录;
-- 不配置 CATALINA_HOME : 在什么地方启动, 就会到启动 startup 命令的 会将 命令所在的 Tomcat 启动;
(3) 端口问题
端口占用问题解决方案 :
-- 1. 关闭占用端口的进程 : 使用 cports 软件查看占用端口的进程, 将其关闭即可, 任务管理器是看不到端口的;
-- 2. 修改 Tomcat 的 HTTP 端口 : 在 tomcat 的 conf/server.xml 中修改下面的配置, 默认 8080 , 修改成一个 其他的数字;
<!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
4. Tomcat 配置 与 目录
(1) 浏览器端口设置
访问服务器端口配置 :
-- 配置文件 : apache-tomcat-6.0.39\conf\server.xml;
-- 配置内容 : 当前默认设置的端口号是 8080, 访问地址是 http://localhost:8080/;
<!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
(2) Tomcat 共享资源
共享一个资源 :
-- 创建 html 页面 : 创建一个 index.html 文档, 里面随便写一写字符串;
-- 将文件放到 webapps 中的目录中 : 在 webapps 中创建一个任意名称目录 test, 然后将 index.html 放置到该目录中;
-- 启动 Tomcat :
-- 浏览器中输入 : 浏览器地址栏输入 http://localhost:8080/test/index.html 地址;
(3) URL 解析
解析 url 地址 : http://localhost:8080/test/index.html;
-- "http://" : url 所使用的协议名称, http 协议;
-- "localhost" : 域名, 相当于 IP 地址;
-- 8080: : Tomcat 所使用的端口号;
-- /test : Tomcat 共享目录的名称, 在 webapps 下面的共享目录;
-- index.html : 共享文件名称;
(4) 目录解析
Tomcat 目录解析 :
-- 目录截图 :
-- bin 目录 : Tomcat 的命令路径, 包括 启动 关闭 Tomcat 服务器;
-- conf 目录 : Tomcat 配置文件目录, 其中 server.xml 用于配置端口号;
-- lib 目录 : Tomcat 的支持包;
-- logs 目录 : 运行产生的日志信息存放目录;
-- temp 目录 : 临时文件存放目录;
-- webapps 目录 : 共享资源目录, 不能单独共享一个文件, 需要创建的文件夹, 将文件放到一个目录中才能共享;
-- work 目录 : tomcat 运行时的工作目录;
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/47146817
二. J2EE 应用创建
1. 创建 J2EE 应用
(1) MyEclipse 中创建应用
MyEclipse 创建 Web 应用 :
-- 创建应用 : 选择 File -> New -> Web Project 选项;
-- 配置应用信息 : 注意 我们使用的是 Tomcat 6.0 版本, 对应 JavaEE 5.0 版本;
-- 创建 Tomcat 服务器 : 选择 Window -> Preference -> MyEclipse -> Server -> Tomcat 6.x 选项, 进行如下配置 :
-- 配置后效果 :
-- 部署应用 : 右键点击服务器, 选择 Add Deployment;
-- 将刚创建的 Hello World 部署到 Tomcat 中去 :
-- 部署后效果 :
-- 运行 Tomcat 服务器 : 地址栏输入 http://localhost:8080/HelloWorld/ 地址;
-- MyEclipse 应用文件截图 :
(2) eclipse 中创建应用
Eclipse 创建 Web 应用 :
-- 创建 Dynamic Web Project :
-- 配置 应用 :
-- 应用目录展示 :
(3) Eclipse 和 MyEclipse 中创建应用服务器版本对应
Eclipse 服务器版本对应 :
-- dynamic web module 2.4 <--> Tomcat 5.5
-- dynamic web module 2.5 <--> Tomcat 6.0
-- dynamic web module 3.0 <--> Tomcat 7.0
MyEclipse 服务器版本对应 :
-- JavaEE 5.0 <--> Tomcat 6.0
-- J2EE 1.4 / J2EE 1.3 <--> Tomcat 5.5
2. Servlet 简单示例
(1) Servlet 示例
Servlet 简单示例 :
-- MyServlet.java 代码 :
package cn.org.octopus.hello; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //避免出现中文乱码 resp.setContentType("text/html;charset=utf-8"); //输出内容 resp.getWriter().write("当前时间 : " + new Date()); } }
-- web.xml 配置文件 :
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置 Servlet 需要配置 Servlet 和 Servlet-mapping 两个标签 --> <servlet> <!-- Servlet 内部名称--> <servlet-name>HelloWorld</servlet-name> <!-- Servlet 全路径名--> <servlet-class>cn.org.octopus.hello.MyServlet</servlet-class> </servlet> <servlet-mapping> <!-- Servlet 内部名称--> <servlet-name>HelloWorld</servlet-name> <!-- servlet 访问名称 --> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping> </web-app>
-- 运行效果 :
【JavaEE WEB 开发】Tomcat 详解 Servlet 入门的更多相关文章
- 《Tomcat与Java Web开发技术详解》思维导图
越想构建上层建筑,就越觉得底层基础很重要.补课系列. 书是良心书,就是太基础了,正适合补课. [纯文字版] Tomcat与Java Web开发技术详解 Servlet Servlet的生命周期 初始化 ...
- 《TomCat与Java Web开发技术详解》(第二版) 第四章节的学习总结--常用Servlet API
要开发Servlet,自然要掌握常用的servlet的相关API.通过此章节的学习,了解到如下常用API 1.Servlet接口--->GenericServlet抽象类(实现Servlet接口 ...
- Servlet学习之web服务器Tomcat 详解
Web服务器是什么 Web服务器是指驻留于因特网上某种类型计算机的程序.当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览器如何查看该文 ...
- JavaWeb开发之详解Servlet及Servlet容器
自JavaEE诞生伊始,Servlet容器和Servlet技术,就构成了JavaEE应用的核心,配合其它组件,它们完善了Java企业级开发的全套解决方案.小到一个静态博客网站,大到分布式的集群应用,都 ...
- Java Web开发之详解JSP
JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面.Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用, ...
- 必应地图api文档,微软必应地图web开发版详解,可以在国内使用国外地图
最近,公司项目要求在页面中嵌入地图,需求还算简单,但是由于必须具备响应式(主要是pc和移动端),而且由于公司业务是全球性的,要支持国外地点搜索.考虑到百度,腾讯,高德等等国内地图无法显示国外数据,谷歌 ...
- 《TomCat与Java Web开发技术详解》(第二版) 第五章节的学习总结 ---- Servlet的高级用法
这一章节主要是介绍了Servlet技术的一些高级用法,如下是我自己的整理归纳 1.下载文件:即获取服务器文件,并把文件写入反馈给客户端 ServletContext.getResourceAsStre ...
- 《TomCat与Java Web开发技术详解》(第二版) 第八章节的学习总结 -- 访问mysql
终于学到如何访问Mysql了 1. 可以看看此章节提供的sql脚本,以后可以照着写了.此外,对于Mysql如何使用,最好的地方就是其官网介绍了.http://dev.mysql.com/doc/ref ...
- 《TomCat与Java Web开发技术详解》(第二版) 第三章节的学习总结--利用Context元素来自定义web应用的存储位置
在学习完第三章后(第三章提供的web应用是helloaapp,我将其放到了tomcat/webapps中),对Context元素的作用理解不深:但是当进入第四章后,发现第四章提供的源码包中也有一个叫h ...
随机推荐
- [BZOJ]1177: [Apio2009]Oil
题目大意:给出一个n*m的矩阵,选出3个不相交的k*k子矩阵,使得子矩阵中元素和最大.(k<=n,m<=1500) 思路:选出的子矩阵有3种情况:横着排三个.竖着排三个.三角状分布(其中有 ...
- 在QEMU中调试ARM程序【转】
转自:http://linuxeden.com/html/develop/20100820/104409.html 最近我想调试一个运行在QEMU模拟ARM系统中的Linux程序.我碰到过一些麻烦,因 ...
- 分区工具PQ
http://www.disktool.cn/jiaocheng/resize-partition.html
- Python 中的 if __name__ == '__main__' 该如何理解
__name__ 表示当前模块名, __main__ 表示正在运行的模块名. if __name__ == '__main__' 这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导 ...
- vue 移动端公众号采坑经验
自己用vue做微信公众号项目有一段时间了,遇到各种奇葩的问题,下面细数那些坑: 第一坑:微信分享导致安卓手机无法调起相册和无法调起微信充值 解决方案: setTimeout(_ => { wx. ...
- Flexible DEMO 实现手淘H5页面的终端适配
<!DOCTYPE html> <html> <head> <title>淘宝flexiblejs</title> <meta cha ...
- Hibernate中Session之get和load方法的真正区别
最近在学习SHH框架中的hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入 ...
- David MacKay:用信息论解释 '快速排序'、'堆排序' 本质与差异
这篇文章是David MacKay利用信息论,来对快排.堆排的本质差异导致的性能差异进行的比较. 信息论是非常强大的,它并不只是一个用来分析理论最优决策的工具. 从信息论的角度来分析算法效率是一件很有 ...
- NVIDIA Titan Xp Star Wars Collector's Edition显卡深度学习工作站 + Ubuntu17.10 + Tensorflow-gpu + Anaconda3 + Python 3.6 设置
为了能让 Tensorflow GPU 版本跑起来,我折腾了1个多星期. 总体参照 https://zhuanlan.zhihu.com/p/32118549 ,安装成功,但还是有不足的地方, 在此记 ...
- 《剑指offer》全部题目-含Java实现
1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. publi ...