• JSP


    tomcat解压后目录
       bin:可执行文件(startup.bat shutdown.bat)
       conf:配置文件(server.xml)
       lib:tomcat依赖的jar文件
       log:日志文件(记录出错等信息)
       temp:临时文件
       webapps:可执行的项目(将我们开发的项目放入该目录)
       work:存放由jsp翻译成的java,以及编译成的class文件
     
    配置tomcat
       a.配置jdk (必须配置JAVA_HOME)
         JAVA_HOME CLASSPATH PATH
       b.配置CATALINA_HOME
     
    访问Tomcat
    在浏览器的地址栏中输入
    Tomcat服务器的IP地址(或域名)、端口号、Web服务目录和JSP页面的名字
    (项目根目录:静态资源文件放在根目录下的,外界能够直接请求获取 
                     即:浏览器可以直接访问WebContent中的文件

    Web-INF:资源受保护,外界不能直接请求获取,只能通过服务器获取再响应给用户,只能通过请求转发来访问

    注意:并不是任何的内部跳转都能访问WEB-INF;原因是:跳转有2种方式:请求转发、重定向)

    修改端口号
    conf配置文件server.xml中修改如下代码:
     <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    //双击bin/startup.bat启动tomcat
    //常见错误:可能与其他服务的端口号冲突
    //tomcat端口号默认8080(此端口号较为常见,容易冲突,建议修改此端口)
     
    常见状态码
    200:一切正常
    300/301:页面重定向(跳转)
    404:资源不存在
    403:权限不足
    500:服务器内部错误(代码有误)
    HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
    分类 分类描述
    1** 信息,服务器收到请求,需要请求者继续执行操作 
    2** 成功,操作被成功接收并处理
    3** 重定向,需要进一步的操作以完成请求
    4** 客户端错误,请求包含语法错误或无法完成请求 
    5** 服务器错误,服务器在处理请求的过程中发生了错误 
     
    设置默认的初始页面
    在项目/WEB-INF/web.xml中编写
     <welcome-file-list>
         <welcome-file>index.html</welcome-file>
     </welcome-file-list>
     
    虚拟路径:
    (将项目复制到webapp目录下,缺点:服务器启动很慢、如果其中有一个项目是错误的就会导致整个服务器无法启动)
    将web项目配置到webapps以外的目录
    a.方式一
    conf/server.xml中配置(主配置文件server.xml修改后,必须重新启动Tomcat服务器)
    host标签中:
    <Context docBase="实际路径" path="虚拟路径(绝对路径、相对路径[相对于webapps])"/>
    (若存在多个<Context>,必须保证多个<Context>的path值不同)
    (注:docBase的值不是项目路径,而是资源路径)
    b.方式二
    ...apache-tomcat-8.5.34confCatalinalocalhost
    中新建“项目名.xml”内容为:

    <Context docBase="...WebContent"/>

    相当于

    <Context path=demo docBase=”...WebContent/>

    (path的值就是xml的名称 )

     
    虚拟主机(了解)
    例如:通过www.test.com访问本机
    conf/server.xml
       <Engine name="Catalina" defaultHost="www.test.com">
       <Host name="www.test.com" appBase="实际路径">
           <Context docBase="实际路径" path="/"/>
       </Host>
    C:WindowsSystem32driversetchost
       增加 127.0.0.1 www.test.com
    流程: www.test.com -> host找映射关系 -> server.xml找Engine的defaultHost -> 通过"/"映射到实际路径>
     
    JSP执行流程
       jsp - java(Servlet文件) - class
       ...apache-tomcat-8.5.34workCatalinalocalhost项目名orgapachejsp
       JSP和Servlet可以相互转换
       第一次访问:服务端将jsp翻译成java,再将Java编译成class文件
       第二次访问:直接访问class文件(如果服务端代码修改了,将会再访问时重新翻译、编译)
     

    配置tomcat运行时环境

           jsp<->servlet

    a.将tomcat/lib中的servlet-api.jar加入项目的构建路径

    b.右键项目 -> Build Path -> Add library -> Server Runtime

     

    部署tomcat

    在servers面板新建一个tomcat实例,再在该实例中部署项目(右键add)之后运行

    注意:一般建议将eclipse中的tomcat与本地tomcat的配置信息保持一致:将eclipse中的tomcat设置为托管模式:第一次创建tomcat实例之后,双击,选择Server Location的第二项

     

    统一字符集编码

    编码分类:

    设置jsp文件的遍历(jsp文件中的pageEncoding属性): jsp -> java

    设置浏览器读取jsp文件的编码(jsp文件中content属性)

    一般将上述设置成一致的编码,推荐使用UTF-8

    文本编码:

                   **将整个eclipse中的文件统一设置(推荐)

                         Window -> Preference ->  Jsp Files -> Encoding

                   **设置某一个项目

                   **设置单独文件

     

    JSP的页面元素:

    a.脚本Scriptlet

         <%  局部变量、java语句 %>

         <%! 全局变量、定义方法 %>

         <%= 输出表达式 %>

         (一般而言,修改web.xml、配置文件、java 需要重启Tomcat服务,修改jsp、html、css、js 不需要重启)

    b.注释

        html注释  <!--    -->  可以被客户通过浏览器查看源码所观察到

        java注释  //   /* ……  */

        jsp注释    <%--   --%>

    c.jsp指令
     
    jsp标记
    指令标记page
    <%@ page 属性1=“属性1的值” 属性2=“属性2的值” … %>
    //属性contentType的值:
    在JSP页面中page指令只能为contentType指定一个值,以此确定响应的MIME类型.如:
    contentType属性的值为“text/html;charset=GB2312”,客户的浏览器启用HTML解析器来解析执行收到的信息
    contentType属性的值为“application/msword”,客户的浏览器将启动本地的Word应用程序来解析执行收到的信息
    contentType属性的值为“image/jpeg”,客户的浏览器将启动图形解码器来解析执行收到的信息
    //属性import的值:
    为JSP页面引入java核心包中的类
    //属性language的值:
    language属性的默认值是"java"
    //属性session:
    session属性的值用于设置是否需要使用Tomcat服务器内置的session对象,默认属性值是true
    //属性buffer:
    内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,默认值是8KB
    //属性autoFlush:
    autoFlush属性指定out流的缓冲区被填满时,缓冲区是否自动刷新,默认值是true
    //属性isThreadSafe
    默认值是true,即一个客户机的线程没有执行完毕,CPU的使用权也可能要切换给其他线程
    指令标记include  
    (用嵌入方式处理文件,在编译阶段就处理所需文件,优点是页面的执行速度快)
    <%@ include file="文件的URL" %> 作用是在JSP上出现该指令的位置处静态嵌入一个文件
    (静态嵌入: Tomcat服务器在编译阶段就完成文件的嵌入操作)
    动作标记include
    (不使用嵌入方式来处理所需文件,在JSP页面运行时才处理文件,即当Tomcat服务器把JSP页面转译成java文件是,告诉java解释器,这个文件在java文件的字节码文件被加载执行时才被处理,缺点是执行速度要慢一些)
    include动作标记要处理的文件如果不是JSP文件,就将文件的内容发送到客户机,由客户机负责执行并显示
    格式:  <jsp:include page="文件的URL" />
        或     <jsp:include page="文件的URL">
                      子标记
                 </jsp:include>
    动作标记param
    可以作为include、forward动作标记的子标记来使用
    格式:  <jsp:param name="名字" value="指定给name属性的值" />
    动作标记forward
    作用:从该标记出现处停止当前JSP页面的继续执行,而转向执行forward动作标记中page属性所指定的JSP页面
    格式:  <jsp:forward page="要转向的页面" />
        或     <jsp:iforward page="要转向的页面">
                      param子标记
                 </jsp:include>
    动作标记useBean
    用来创建并使用一个JavaBean,Sun公司倡导的是:用HTML完成JSP页面的静态部分,用JavaBean完成动态部分
    Tag文件与Tag标记
    (Tag文件,在设计Web应用时,可以通过编写Tag文件来实现代码复用)
    Tag文件的结构:Tag文件的扩展名为.tag的文本文件,其结构几乎与JSP文件相同
    Tag标记: 格式:  <Tag文件的名字/>
                      或   <Tag文件的名字>
                                             标记体
                                  <Tag文件的名字/>
    Tag文件中的常用指令: tag、taglib、include、attribute、variable
    Tag标记的使用:
    (把这些Tag文件存放到Tomcat服务器指定的目录中,即存放到"Web服务目录WEB-INF ags"中,其中的WEB-INF和tags都是固定的子目录名称。tags或其下的子目录是专门存放Tag文件的,而一个Tag文件对应一个Tag标记,称tags或其下的子目录为一个标记库)
    <taglib>指令标记引入标记库,一个JSP页面可以使用几个<taglib>指令标记引入若干个标记库
    格式:  <%@taglib tagdir="自定义标记库的位置" prefix="前缀" %>
    <前缀:Tag文件名字 />
    例:将FirstTag.tag存放在tags目录中,而SecondTag存放在tags的子目录tagsTwo中
    demo.jsp
    <%@page contentType="text/html;Charset=GB2313" %>
    <%@taglib tagdir="/WEB-INF/tags" prefix="com" %>
    <%@taglib tagdir="/WEB-INF/tags/tagTwo" prefix="game" %>
    <HTML>
        <BODY>
            <H3>以下是调用FirstTag.tag文件的效果</H3>
            <com:FirstTag />
            <H3>以下是调用SecondTag.tag文件的效果</H3>
            <game:SecondTag />
        </BODY>
    </HTML>
     
     
    JSP九大内置对象(自带的,不需要new也能使用的对象)
    ●request: 请求对象;存储"客户端向服务端发送的请求信息"
    request对象的常见方法:
    String getParameter(String name) 根据请求的字段名返回字段值value
     String[] getParameterValues(String name) 根据请求的字段名key,返回多个字段值value (checkbox)
    void setCharacterEncoding("编码格式utf-8")
    设置post方式的请求编码 (tomcat7以前默认iso-8859-1,tomcat8以后改为了utf-8)
    getRequestDispatcher("b.jsp").forward(request,response) 请求转发的方式跳转页面 a -> b,可以获得数据,并且地址栏没有改变
    getServerContext() 获取项目的ServletContext对象
    (get与post请求方式的区别: 
    a.  get方式在地址栏显示请求信息,但是地址栏能够容纳的信息有限,4-5KB;如果请求数据存在      大文件、图片等,会出现地址栏无法容纳全部的数据而出错)
    b.  文件上传操作,必须是post
    统一请求的编码request   (如果出现乱码,解决:)
         get方式请求,则 在server.xml中统一get方式的编码.. URIEncoding="UTF-8"
         post方式请求,request.setCharacterEncoding("utf-8");
    ●response: 响应对象
    提供的方法:
    void addCookie(Cookie cookie): 服务端向客户端增加cookie对象
    void sendRedirect(String location) throw IOException: 页面跳转的一种方式(重定向),导致数据丢失
    void setContentType(String type): 设置服务端响应的编码(设置服务端的contentType类型)
      请求转发 重定向
    地址栏是否改变 不变 改变
    是否保留第一次请求时的数据 保留 不保留
    请求的次数 1 2
    跳转发生的位置 服务端 客户端发出的第二次跳转
    ●session:  会话对象
    a.session存储在服务端
    b.session是在同一个客户请求时共享
    c.实现机制:客户端第一次请求服务端时,服务端会产生一个session队形用于保存客户的信息,服务端会产生一个cookie,并且该cookie的name=JSESSIONED,value=服务端sessionid的值,然后服务端会再响应客户端的同时,将该cookie发送给客户端。客户端第2/n次请求服务端时,服务端会先用客户端cookie中的JSESSIONID去服务端的session中匹配sessionid。
    Cookie (存在客户端,不是内置对象): Cookie是由服务端生成的,再发送给客户端保存,相当于本地缓存的作用
    Cookie 由 javax.servlet.http.Cookie 类产生的
    public Cookie (String name,String value)
    String getName(): 获取name
    String getValue(): 获取value
    void setMaxAge (int expiry): 最大有效期(秒)
    服务端准备Cookie:  response.addCookie(Cookie cookie)
    页面跳转(转发,重定向)
    客户端获取Cookie:  request.getCookie( );
    不能直接获取某一个单独对象,只能一次性将全部的cookie拿到
    通过F12可以发现,除了自己设置的Cookie对象外,还有一个name为JSESSIONID的cookie
    (建议cookie只保存英文数字,否则需要进行编码)
    session方法:
    String getId() :  获取sessionId
    boolean isNew() :  判断是否是新用户
    void invalidate() :  使session失效
    void setMaxInactiveInterval(秒) :  设置最大有效非活动时间
    int getMaxInactiveInterval() :  获取最大有效非活动时间
    void  setAttribute()
    Object getAttribute()
    ●application:  全局对象
    String getContextPath() :  虚拟路径
    String getRealPath(String name): 绝对路径(虚拟路径相对的绝对路径),参数是虚拟路径
    ●out: 输出对象,向客户端输出内容
    page: 当前JSP页面对象(相当于java中的this)
    pageContext : JSP页面容器
    ●config: 配置对象
    exception: 异常对象
    JSP作用域范围从小到大: (作用域:对象的声明周期和可访问性)
    pageContext : 当前页面有效
    request: 同一次请求有效 (请求转发后有效,重定向后无效)
    session: 同一次会话有效 (无论怎么跳转都有效,关闭/切换浏览器后无效)
    application : 整个项目运行期间有效  (切换浏览器仍然有效,关闭服务/其他项目无效)
     

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





  • 相关阅读:
    【转】Odoo开发之:工作流 workflow
    【转】Odoo:基本字段类型
    【转】odoo 10的企业微信发送程序介绍
    Installing python-ldap in Ubuntu
    Odoo8中安装新模块找不到的问题
    mybatis缓存
    ThreadPoolExecutor线程池进阶使用
    使用Dubbo实现RPC调用
    java静态代理模式
    java四种线程池
  • 原文地址:https://www.cnblogs.com/tripleDemo/p/10320435.html
Copyright © 2020-2023  润新知