• JSP学习笔记(1)——Jsp指令、动作元素和内置对象


    简单来说,javaweb技术就是让服务器端能够执行Java代码,之后返回数据给客户端(浏览器)让客户端显示数据

    jsp页面中可以嵌套java代码(java小脚本)和嵌套Web前端(html,css,js)来显示数据。

    服务器解析一个jsp,其实就是把jsp中的java代码编译并执行,之后再返回一个String,String包含着html等Web前端数据,浏览器(客户端)就可以像平常打开静态网页一样,接受静态网页数据(html),解析并显示给用户。

    1. 指令 <%@ %>
    2. 脚本 <% %>
    3. 声明 <%! %>
    4. 表达式 <%= %>
    5. 注释 <%-- --%> 服务器端才能看见,客户端看不见
    <%
        //这里面可以写java代码
    %>
    
    <%!
        //这里面只能写变量申明,不能写java代码
    %>
    
    //一般这里与html标签联用,输出数据
    <%= %>

    指令:

    page指令

    page指令,主要用于jsp页面的设置

    属性描述
    contentType 编码(设置为UTF-8,防止中文出现乱码显示)
    language 定义语言(java)
    ErrorPage="xx.jsp" 当前页面出现异常,跳转到处理异常的jsp页面
    isErrorPage="true" true,即为当前的页面是处理错误的页面,可以使用隐式对象获取到信息excetion.getMessage()

    下面的代码,就是index.jsp页面出现错误之后,就会跳转到处理异常的界面catch_error.jsp

    index.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="catch_error.jsp" %>
    <html>
      <head>
        <title>fitsr jsp</title>
      </head>
      <body>
    <%
      int a=10;
      int result = a/0;
      out.write("<h1>"+result+"</h1>");
    %>
      </body>
    </html>
    <%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
    <html>
    <head>
        <title>处理异常</title>
    </head>
    <body>
    <%
        String message = exception.getMessage();
        out.write("<h1>错误信息:" + message + "</h1>");
    %>
    </body>
    </html>

    include指令

    包含其他文件,如引入一个jsp页面或者是html页面

    target指令

    用来引入标签库的定义(JSTL标签),后面补充。

    Jsp动作元素(Jsp行为)

    说明

    本质上,就是定义的一些函数。
    JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等.

    格式

    <jsp:action_name attribute="value" />

    常用

    语法描述
    jsp:include 用于在当前页面中包含静态或动态资源
    jsp:useBean 寻找和初始化一个JavaBean组件
    jsp:setProperty 设置 JavaBean组件的值
    jsp:getProperty 将 JavaBean组件的值插入到 output中
    jsp:forward 从一个JSP文件向另一个文件传递一个包含用户请求的request对象
    jsp:plugin 用于在生成的HTML页面中包含Applet和JavaBean对象
    jsp:element 动态创建一个XML元素
    jsp:attribute 定义动态创建的XML元素的属性
    jsp:body 定义动态创建的XML元素的主体
    jsp:text 用于封装模板数据

    参考地址 菜鸟 Jsp动作元素

    jsp:userBean
    创建一个Bean实例,如果存在就不会创建

    <jsp:userBean id="" class="" scope="">
    </jsp:userBean>

    之后可以在java脚本中,使用定义的bean,id就是变量名

    <jsp:setProperty name="" property="" value="" >
    </jsp:setProperty>

    name是变量名(上面jsp:userBean标签的id),value中的数值会自动转型为属性对应的类型

    <!-- 相当于请求转发 -->
    <jsp:forword page="">
    </jsp:forword>
    <!-- 传参-->
    <jsp:forword page="">
        <jsp:param name="" value=""/>
    </jsp:forword>

    jsp:include 和指令<% @include 的区别

    指令<% @include 的jsp页面不会被单独的转译成java文件和编译成class文件,不允许存在相同的变量
    jsp:include 的jsp页面会被单独地转译成java文件和编译成class文件,允许存在相同的变量

    内置对象(隐式对象)

    九大隐式对象

    对象描述
    request HttpServletRequest类的实例
    response HttpServletResponse类的实例
    out PrintWriter类的实例,用于把结果输出至网页上
    session HttpSession类的实例
    application ServletContext类的实例,与应用上下文有关
    config ServletConfig类的实例
    pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
    page 类似于Java类中的this关键字
    Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

    这里面九大隐式对象,常用的就是前四个。可以直接在JSP中的脚本,声明和表达式中使用(<% %> <%= %>)

    request对象

    (浏览器)客户端发出请求,就会创建一个request对象

    request对象是javax.servlet.http.HttpServletRequest 类的实例

    每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。

    request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。

    rquest还可以获得表单提交之后传来的参数值

    //获得表单中的name="username"的标签内容
    String name = request.getParameter("username");
    //设置编码,防止出现中文乱码
    request.setCharacterEncoding("utf-8");

    参考链接 Jsp 客户端请求

    response对象

    response对象是javax.servlet.http.HttpServletResponse类的实例。

    当服务器创建request对象时会同时创建用于响应这个客户端的response对象。

    response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。

    out对象

    out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容或者是当前页面直接输出内容

    某个jsp文件,下面的代码就是表示该jsp文件打开之后,浏览器会显示hello world

    <%
        out.print("hello world");
        //输出一级标题
        out.print("<h1>hello</h1>");
        //实现换行
        out.print("hello<br>");
    %>

    虽然有println方法,但是换行在输出后面使用<br>标签

    服务端可以使用out对象的write或者是print方法,向客户端返回数据

    session对象

    每当创建一个会话(即浏览器访问当前网站,不关闭浏览器就是一个会话),就会产生一个session对象

    一般存放用户登录信息,重定向之后的session存放的数据不会丢失

    web.xml中设置session的有效时长,默认是30分钟

    <session-config>
        <timeout>单位为9分钟
    </session-config>
    //session过期,就会新建,否则,就返回存在的session
    getSenssion(true)

    其他对象参考

    作用域

    pageContext,request,session,application都可以通过setAttribute和getAttribute方法来存放和取出数据

    pageContetxt表示数据只能存放在当前页面,打开了新页面就无法获得之前存放的数据

    request比pageContext的范围稍大一些,可以在新页面获取之前的存放的数据,不过,只能是请求转发的新页面才能获得。

    session和application范围较大,存放的数据几乎全部页面都可以取出来。

    request.setAttribute("user",user);
    Object o = request.getAttribute("user");//取出来需要强制转型
  • 相关阅读:
    mysql插入中文数据变成问号怎么处理
    项目第二阶段
    项目第一阶段
    项目测试
    常用mysql操作
    常用的mysql操作
    mysql操作
    土地档案管理系统需求分析
    土地档案管理系统架构图,ER图,用例图
    Load data local infile
  • 原文地址:https://www.cnblogs.com/chaoyang123/p/11548823.html
Copyright © 2020-2023  润新知