tomcat初级学习
一、tomcat的目录结构说明
1.bin:可运行程序的目录 startup.bat shutdown.bat 等
2.conf:配置文件目录 tomcat-users.xml server.xml
3.lib:tomcat 运行时需要的依赖包
4.logs:tomcat运行时的日志文件存放目录
5.temp:tomcat运行时需要的临时目录
6.webapps:我们将来存放我们自己开发web应用程序的默认目录。重要!
7.work:tomcat运行时的工作目录
二、
Tomcat运行web应用程序:
1:静态资源的方式:
第一步: 在tomcat的webapps目录下新建一个 文件夹,起名 webapp1
第二步:进入webapp1目录下,新建一个html页面(.html/.htm),index.html
<!DOCTYPE html> <html> <head> <title>webapp1 - title</title> </head> <body> <h1>hello tomcat</h1> </body> </html> |
第三步:保存,(有必要时,重启tomcat服务器)让tomcat运行我们的webapp1应用程序。
第四步:通过浏览器访问我们的webapp1应用
http://localhost:8080/webapp1/
or http://localhost:8080/webapp1/index.html
or 通过ip地址或者域名
http://192.168.91.180:8080/webapp1/index.htm
如果在局域网内,访问自己架设的web网站,需要修改hosts文件
C:\Windows\System32\drivers\etc\hosts 文件的内容,添加域名解析记录
例如:192.168.91.180newedu.com
注意,因为系统安全策略的问题, 默认情况下hosts文件没有修改权限。
需要添加可修改的权限
访问web应用有一个默认访问首页的配置问题:
默认情况下,tomcat,自动访问 index.html/index.htm
2:动态资源的方式
第一步: 在tomcat的webapps目录下新建一个 文件夹,起名 webapp2
第二步:进入webapp2目录下,新建一个jsp页面,index.jsp
<%@page language="java" import="java.util.*" pageEncoding="utf-8" %> <!DOCTYPE html> <html> <head> <title>webapp1 - title</title> </head> <body> <h1>hello tomcat- dynamical page </h1> ${header["User-Agent"]} </body> </html> |
第三步:保存,(有必要时,重启tomcat服务器)让tomcat运行我们的webapp2应用程序。
第四步:通过浏览器访问我们的webapp2应用
http://localhost:8080/webapp2/index.jsp
WEB-INF下面的资源不能被用户直接访问;但是除了WEB-INF这个目录其他的自己建立的目录,都是可以被访问的
例如: /abc/ 建了一个jsp页面Index.jsp;
如果要访问index.jsp,就需要访问http://localhost:8080/webapp2/abc/index.jsp
WEB-INF中可以放置 web.xml 文件,web.xml里面可以对我们的webapp2项目做特殊配置:
比如说,欢迎页面,或者叫首页
(如何修改动态网站的欢迎页面?)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true">
<display-name>webapp2---jsp page</display-name> <description> Welcome to Tomcat </description> <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>123.jsp</welcome-file> </welcome-file-list>
</web-app> |
Tomcat的主要工作:
1: 提供一个web服务,提供给外部用户,访问;我们就可以添加自己的webapp,来达到架设自己网站的目的
2:tomcat 将jsp 翻译 成java代码;
这个动作什么时候 发生呢?
n 在用户第一次访问该jsp页面时,自动将jsp页面转换为一个java文件,
例如: index.jsp 转换为 index_jsp.java; 应该有一个类名index_jsp
3:tomcat 将java代码进行编译compile;
4:tomcat 初始化我们的index_jsp.java 类
5:tomcat 调用index_jsp.java中的方法。
注意:用户在第2次访问 jsp页面时,直接执行 5步,直接调用index_jsp.java中的方法。
面试题:为什么jsp页面第一次访问慢,第二次访问快?
3:Eclipse 集成开发工具与tomcat的配置:
Ctl + S 保存,或者点击上面的关闭按钮,提示保存并关闭。完成tomcat的配置
4:Eclipse + tomcat 常见错误:
Address already use jvm_bind
针对于端口被占用的问题的通用解决办法:
1) 将tomcat shutdown
2) 将tomcat下的目录webapps 下的所有的无关web项目都删除
3) 重启启动tomcat,即可。
5:Jsp页面中的声明
<%@ page
language="java" -- 指定页面中的开发语言,只能是java,没有其他值
contentType="text/html;charset=utf-8" -- 告诉浏览器,返回的页面内容是文本文件类型的html小类型,并且 编码方式为utf-8
pageEncoding="utf-8" (重要)-- 告诉 tomcat 该页面保存时使用的编码方式,并且eclipse工具有一个便捷的方式,如果修改了pageEncoding,页面保存时的编码方式,随之改变,避免了乱码问题的出现,可以与xml文件头的encoding做类比记忆。
%>
http的协议解析:
http的协议是一种无状态的协议,基于tcp/ip协议:
一个请求,一个响应构成了一次完成的http请求过程。
1:Request:
请求头 |
请求头的值 |
中文解释 |
Accept |
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 |
告诉tomcat webserver,客户端浏览器可以接受的文档类型 |
Accept-Encoding |
gzip, deflate, sdch |
可以接受gzip的压缩方式 |
Accept-Language |
zh-CN,zh;q=0.8,en;q=0.6 |
告诉tomcat,可以接受的语言 |
Connection |
keep-alive |
“让子弹飞一会儿”让服务于客户端之间的连接时间延长一会儿,让更多的资源被传递,提供浏览器的开始资源响应速度。 |
Cookie |
JSESSIONID=52585D1EE5BDD782BE4B3F73E85B306D; tu=21b986504ef97a36723a58eb211cd330 |
在客户端保存一些服务器的返回信息,以供下次访问时使用,叫”小甜点” |
DNT |
1 |
? |
Host |
newedu.com:8080 |
Tomcat所在的主机域名以及端口 |
Upgrade-Insecure-Requests |
1 |
Websocket http协议层面的支持 |
User-Agent |
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 |
我们使用的浏览器的所在客户端信息。 |
Request URL |
http://newedu.com:8080/webapp2/index.jsp GET /webapp2/index.jsp HTTP/1.1 |
要从服务器访问的资源名字以及路径 |
Request Method |
Get/post |
请求方法 |
Remote Address |
192.168.91.180:8080 |
客户端的访问的ip地址 |
2:Response
Response 状态 |
200 OK |
Tomat响应的状态码 |
Content-Length |
311 |
Tomcat服务器响应的内容字节长度 |
Server |
Apache-Coyote/1.1 |
Tomcat的别名 |
Set-Cookie |
JSESSIONID=0FBED8BE3DFBE778B121768FB7868F86; Path=/webapp2/; HttpOnly |
Tomcat设置cookie的内容 |
Content-Type |
text/html;charset=utf-8 |
服务端告诉浏览器,返回的内容类型以及编码方式 |
Date |
Sun, 18 Sep 2016 08:33:16 GMT |
响应时间 |
http的状态码分类:
200 – 成功
300 – 转发
304 缓存
400 – 客户端错误
404 –所请求的资源不存在。
500 – 服务端错误
3:总结:
http协议的主要内容:
一个http的请求协议格式:
请求资源的路径 GET /webapp2/index.jsp HTTP/1.1
很多的请求头(键值对 map)
空格
请求体为空(因为参数都放到了url中。例如:http://newedu.com:8080/jsp-day01/login.jsp?name=jerry&pwd=jerry)
如果使用Post方式,那么参数就被放置到请求体中
(name=jerry&pwd=jerry)
一个http的响应协议格式:
响应请求的状态码 HTTP/1.1 200 OK
很多响应头
空格
响应体(一般情况下,是准备要显示的html页面内容)