黑马程序员技术交流社区

标题: Tomcat学习笔记 [打印本页]

作者: FromZeroStar    时间: 2019-6-13 17:41
标题: Tomcat学习笔记
        一.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;
                    }







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2