• JSP随笔


    如何浏览器如何通过地址访问服务器定位到webapps目录下?

    localhost:8080/项目名/servlet别名

    localhost与8080(服务器端口号)定位到webapps;项目名在IDE中定义;servlet别名在xml中配置。

    ---------------------------------------------------------------------------------------------------------------

    Jsp三种注释
    前端语言注释:
    会被转译,会被发送,但不会被浏览器执行
    java注释:
    会被转译,但不会被servlet执行
    jsp注释:
    不会被转译。
    --------------------------------------------------------------------
    Jsp的page指令学习:
    <%@page 属性名="属性值" 属性名="属性值"%>
    language:声明jsp要被转译的语言
    import: 声明java文件导入的包,不同的包用逗号隔开
    pageEncoding:设置当前jsp文件的编码格式(注意:pageEncoding不仅设置了jsp文件的编码方式,也包含设置了响应给浏览器的编码)
    contentType:设置了jsp数据响应给浏览器时,浏览器的解析和编码格式。

    session:设置转译的servlet中是否开启session支持,默认开启,true表示开启,false表示关闭
    errorPage:设置JSP的运行错误跳转页面(出现逻辑错误,即编译错误时跳转)
    extends:设置jsp转译的java文件要继承的父类(报名+ 类名)。
    作用:配置jsp文件的转译相关参数。
    --------------------------------------------------------------------

    Jsp局部代码块:(表面在写html,实际上写的servlet程序)
    特点:
    局部代码块中声明的java代码块(用<% ... %>来表示)被原样转译到jsp对应的servlet文件的JspService文件里了
    代码块中声明的变量都是局部变量。
    使用:<% java代码 %>
    缺点:使用局部代码块在jsp中进行逻辑判断,书写麻烦,阅读困难
    因此,逻辑判断一般不再jsp中写,而在servlet中实现。
    开发:servlet进行请求逻辑处理,使用jsp进行页面展现。
    Jsp全局代码块:
    特点:声明java代码作为全局代码转译到对应的servlet类中
    使用:<%! 全局代码 %>
    开发:全局代码块声明后,在局部代码块中使用。
    Jsp的脚本段语句:
    特点:帮助我们快速的获取变量或者方法的返回值作为“数据响应!!”给浏览器
    使用:<%= 变量名或方法%>
    注意:不要在变量名或者方法后使用分号
    位置:除了Jsp语法要求外的任意位置

    --------------------------------------------------------------------
    Jsp静态引入和动态引入 (jsp的include指令)
    Jsp静态引入:<%@include file="要引入的jsp文件的相对路径">
    特点:
    会将引入的jsp文件和当前jsp文件转译成一个java(servlet)文件使用
    在网页中也就显示了合并后的显示效果
    注意:
    静态引入的jsp文化不会单独转译成java(Servlet)文件
    当前文件和静态引入的jsp文件不能使用java代码块声明的同名变量

    Jsp动态引入: <jsp:include page="要引入的jsp文件的相对路径"></jsp:include>
    特点:
    会将引入jsp文件单独转译,当前文件转译好的java文件中调用引入的jsp文件转译文件
    在网页中显示合并后的显示效果。
    注意:
    动态引入允许文件中声明同名变量。
    引入的优点:降低代码的冗余性,便于维护。
    --------------------------------------------------------------------
    jsp的转发标签forward:
    使用:
    <jsp:forward page = "要转发的jsp文件相对路径"></jsp:forward>
    特点:
    一次请求
    地址栏信息不改变
    注意:
    在转发标签的两个标签中除了写<jsp:param name= value= >以外,其他任意字符都报错。
    name为附带数据的键名
    value为附带的数据内容
    一组标签表示一个键值对
    会将数据以?的形式拼接在转发路经后面
    --------------------------------------------------------------------
    jsp的内置对象
    内置对象:
    jsp文件在转译成其对应的servlet文件的时候,自动生成的并声明的对象,我们在jsp页面中直接使用即可。
    注意:
    内置对象在jsp页面中使用,使用局部代码块或者脚本段语句来使用。不能够在全局代码块中使用。

    内容:九个对象
    1、pagecontext:页面上下文对象,封存了其他内置对象。
    eg: pageContext = _jspxFactory.getPageContext(this, request, response,
    "error.jsp", true, 8192, true);
    注意:每个jsp只有一个pagecontext对象。
    作用域范围:当前页面
    **2、request:封存当前请求数据的对象,由tomcat服务器创建。---一次请求(生命周期)
    **3、session:此对象用来存储用户不同请求的共享数据。-----一次会话(生命周期)
    **4、application:也就是servletcontext对象,一个项目只有一个;
    存储用户共享数据的对象,以及完成其他操作。----项目内
    **5、response:响应对象,用来响应请求处理结果给浏览器的对象;设置响应头;重定向
    6、out:响应对象,jsp内部使用(servlet中没有)。带有缓冲区的响应对象,效率高于response对象。
    7、page:代表当前servlet对象。
    eg: final java.lang.Object page = this;
    8、exception:异常对象。存储当前运行的异常信息。
    注意:使用此对象需要在page指令中使用属性isErrorPage="true"开启
    9、config:也就是servletconfig,主要用来获取web.xml中的配置数据,完成一些初始化数据读取。

    --------------------------------------------------------------------
    Jsp的四个作用域对象:
    pageContext:当前页面。解决了当前页面内的数据共享问题。它作用用来获得其他内置对象。
    request:一次请求。一次请求的servlet数据共享问题。通过请求转发,将数据流转给下一个servlet。
    session:一次会话。一个用户不同请求的数据共享。将数据从一次请求流转给其他请求。
    application:项目内。不同用户的数据共享问题。将数据从一个用户流转给其他用户。
    --------------------------------------------------------------------
    Jsp的路径:
    在Jsp中资源路径,可以使用相对路径完成跳转

    1、相对路径遇到的问题:
    1、资源位置不可随意更改
    2、需要使用../进行文件夹的跳出。使用起来比较麻烦。
    2、使用绝对路径:
    /虚拟项目名/项目资源路径
    注意:在jsp中资源的第一个"/"表示的是服务器的根目录,相当于localhost:8080。

    3、使用jsp中自带全局路径声明:
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    <base href="<%=basePath%>">
    其作用:给资源前面添加项目路径

    注释: Servlet重定向路径总结:

    1、相对路径:从当前请求的路径查找资源路径

      相对路径如果servlet别名中包含目录,会造成重定向失败。

    2、绝对路径:

      /虚拟项目名/资源路径(一般用绝对路径)

    Servlet请求转发总结:

      / 表示项目根目录。

      req.getRequestDispatcher("/资源路径").forward(req,resp);

  • 相关阅读:
    java网络请求工具类
    MySql 日期比较大小
    JAVA泛型整理
    循环list从list中移除数据
    MySql UNION字段
    session理解
    IDEA鼠标悬停提示变量值
    JAVA常用的RPC框架
    字符串查找重复字符最多的
    java List分组
  • 原文地址:https://www.cnblogs.com/fjwjw/p/10207249.html
Copyright © 2020-2023  润新知