一.web项目在tomcat中的结构
<Server> <!--服务器-->
<Service>
<Connector/> <!--连接器-->
<Engine> <!--引擎-->
<Host> <!--主机-->
<Context/> <!--项目-->
</Host>
</Engine>
</Service>
</Server>
服务器: 顶级构成元素,属性有声明关闭tomcat服务端口,用于关闭tomcat进程所用。当执行shutdown.sh关闭tomcat时就是连接8005端口执行的SHOUTDOWN命令
连接器:核心,声明协议和默认端口 与客户程序建立连接,组件负责接受客户的请求,以及吧tomcat服务器的响应结果发给客户。
默认的第一个连接器监听8080端口,负责建立Http连接,一般通过浏览器访问tomcat服务器的web应用时,使用该连接器,他会
创建一个Request和Response对象用来交换数据,然后产生一个线程来处理这个请求。
容器(Connector):包含引擎(Engine),主机(Host),项目(Context)
二.request原理
1.tomcat服务器会根据请求url中的资源路径,创建对应的servlet的对象。
2.tomcat服务器,会创建request和response对象,request对象中封装请求消息数据,如请求行,请求头这些数据
3.tomcat将request和response两个对象传递给servlet对象中的service方法,并且调用service方法
4.程序员可以通过request对象获取请求消息数据,通过response对象设置响应消息数据
5.服务器在给浏览器做出相应之前,会从response对象中拿程序员设置的响应消息数据。
三.Servlet相关配置
1. urlpartten:Servlet访问路径
1. 一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"})
2. 路径定义规则:
1. /xxx:路径匹配
2. /xxx/xxx:多层路径,目录结构 /*/xxx 其中*不是通配符,只是星号而已
3. *.do:扩展名匹配 /*.do 异常
3.中文乱码问题:从客户端服务器发送到服务器的请求数据
1. get方式:tomcat 8 已经将get方式乱码问题解决了
*8之前,get方法获取参数,在请求行中,先使用getParamater取参数值,
然后使用String的getBytes(“ISO-8859-1”)方法得到原字符串的字节码数组,
然后在使用new String(byte[] ,"UTF-8")得到原字符串
2. post方式:会乱码
* 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");
四:
//将文件中文名转为URL的16进制码,可以解决由于IE版本过低,导致无法解析中文文件名,不能正常访问的 资源的问题
var sources = document.getElementsByClassName("source");
for(var i=0;i<sources.length;i++) {
//由标签对象得到某个属性的,在得到其属性的值
var nodeValue = sources[i].attributes["filename"].nodeValue;
//转为URL码
var s = encodeURIComponent(nodeValue);
//设置标签的href属性值
sources[i].href ="/downloadServlet?filename="+ s;
}
|
|