zoukankan      html  css  js  c++  java
  • JSP (二) -- JSP与HTML集成开发


    脚本

    脚本可以编写Java语句、变量、方法或表达式。

    普通脚本

    语法:<% Java代码 %>

    <!--普通脚本-->
    <%
          int b = 456 ; //局部变量
          out.println("我在普通脚本里"); //可以直接输出到页面上
          System.out.println("哈哈哈哈");//输出到控制台上
    %>
    
    • 经验:普通脚本可以使用所有Java语法,除了定义函数。

    注意:

    • 脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套。

    • 普通脚本里面的变量为局部变量(_jspService方法里面)。

    声明脚本

    语法:<%! 定义变量、函数%>

    <%! int i = 0; %>
    <%! int a,b,c; %>
    <%! Object object = new Object(); %>
    <%!
          int a = 123; //全局变量
    
          //定义方法
          public void m1(){
                System.out.println("Hello World! , 你好!");
          }
    %>
    

    注意:

    • 声明脚本声明的变量是全局变量(转为生成Servlet的成员变量)。

    • 声明脚本的内容可以在普通脚本<% %>中调用。

    • 如果声明脚本中的函数具有返回值,可以直接使用输出脚本调用<%=方法() %>

    输出脚本

    语法:<%=Java表达式%>

    <%= new java.util.Date()%>
    

    注意:

    • 输出脚本可以输出带有返回值的函数。

    • 输出脚本中不能加;

    JSP注释

    JSP注释主要有两个作用:为脚本代码作注释以及作为HTML内容注释。

    语法规则

    语法 描述
    <%--注释--%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译
    <!--注释--> HTML注释,通过浏览器查看网页源代码时可以看见注释内容

    JSP指令

    JSP指定用来设置与整个JSP页面相关的属性。

    指令 描述
    <%@ page ... %> 定义页面的依赖属性,比如脚本语言,error页面,缓存需求等等
    <%@ include ... %> 包含其他文件
    <%@ taglib ... %> 引入标签库的定义,可以是自定义标签

    page指令

    • 语法:<%@ page attribute1="value1" attribute2="value2" %>

    • Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令

    属性 描述
    contentType 指定当前JSP页面的MIME类型和知乎编码格式
    errorPage 指定当前JSP页面发生异常时需要转向的错误处理页面
    isErrorPage 指定当前页面是否可以作为另一个JSP页面的错误处理页面
    import 导入要使用的Java类
    language 定义JSP页面所用的脚本语言,默认是Java
    session 指定JSP页面是否使用session.默认为true立即创建,false为使用时创建
    pageEncoding 指定JSP页面的编码格式
    <%@ page contentType="text/html;charset=UTF-8" language="java" session="false" errorPage="error.jsp"  pageEncoding="utf-8" %>
    <%@ page import="java.util.Date" %>
    

    include指令

    • 语法:<%@include file="被包含的SP路径" %>

    • 通过incdude指令来包含其他文件。

    • 被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是当前JSP文件的一部分,会被同时编译执行(静态包含)。

    <%@ include file="header.jsp">
    ...
    ...
    <%@ include file="footer.jsp">
    

    注意:有可能会有重名的冲突问题,不建议使用。

    taglib指令

    • 语法:<%@ taglib uri="外部标签库路径% prefix="前缀" %>

    • 引入JSP的标准标签库

       <%@ taglib uri="http://java.sun.com/jsp/jstl/core prefix="c"%>               
    

    动作标签

    • 语法:<jsp:action_name attribute="value" />

    include

    • 语法:<jsp:include page="相对URL地址"/>

    • jsp:include 动作元素会将外部文件输出结果包含在JSP中(动态包含)

    <jsp:inculde page="index.jsp"/>
    

    注意:
    前面已经介绍过include指令,它是将外部文件的输出代码复制到了当前JSP文件中。而这里的jsp:include动作不同,是将外部文件的输出结果引入到了当前JSP文件中。

    useBean

    • 语法:<jsp:useBean id="name" class="package.className">

    • jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean。

    <jsp:useBean id="user" class="com.zjw.User"/>
    
    • 在类载入后,我们可以通过jsp:setProperty和jsp:getProperty动作来修改和获取bean的属性。

    setProperty

    可以在jsp:useBean元素之后使用jsp:setProperty进行属性的赋值

    属性 描述
    name name属性是必须的。它表示要设置属性的是哪个Bean。
    property property属性是必须的。它表示要设置的是哪个属性。
    value value属性是可选的。该属性用来指定Bean属性的值。
    <jsp:useBean id="user" class="com.zjw.bean.User"/>
    <jsp:setProperty name="user" property="age" value="25"/>
    <jsp:setProperty name="user" property="name" value="朱俊伟"/>
    

    getProperty

    jsp:getProperty动作提取指定Bean属性的值,转成字符串,然后输出

    属性 描述
    name 要检索的Bean属性名称。Bean必须已定义。
    property 表示要提取Bean属性的值。
    <jsp:getProperty name="user" property="name"/>
    <jsp:getProperty name="user" property="age"/>
    

    forward

    • 语法:<jsp:forward page="相对URL地址"/>

    • jsp:forward动作把请求转到另外的页面。

    <jsp:forward page="index.jsp">

    param

    • 语法:<jsp:param name="" value=""/>

    • 在转发动作内部使用,做参数传递

    <%
        request.setCharacterEncoding("UTF-8");
    %>
    <%--转发--%>
    <jsp:forward page="../index.jsp" >
        <jsp:param name="name" value="朱俊伟"/>
    </jsp:forward>
    
    <%=request.getParameter("name")%>
    

    内置对象

    由JSP自动创建的对象,可以直接使用

    对象名 类型 说明
    request javax.servlet.http.HttpServletRequest
    response javax.servlet.http.HttpServletResponse
    session javax.servlet.http.HttpSession 由session="true"开关
    application javax.servlet.http.ServletContext
    config javax.servlet.http.ServletConfig
    exception javax.lang.Throwable 由isErrorPage="false"开关
    out javax.servlet.jsp.JspWriter javax.servlet.jsp.JspWriter
    pageContext javax.servlet.jsp.PageContext
    page javax.lang.Object当前对象的this 当前servlet实例

    四大域对象

    JSP有四大作用域对象,存储数据和获取数据的方式一样,不同的是取值的范围有差别

    • pageContext(javax.servlet.jsp.PageContext)当前JSP页面范围

    • request(javax.servlet.http.HttpServletRequest)一次请求有效

    • session (javax.servlet.http.HttpSession) 一次会话有效(关闭浏览器失效)

    • application(javax.servlet.ServletContext)整个Web应用有效(服务器重启或关闭失效)

    package com.zjw.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/scope")
    public class Scope extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.setAttribute("request","request值");
            req.getSession().setAttribute("session","session值");
            req.getServletContext().setAttribute("application","servletContext值");
            System.out.println("servlet....");
            resp.sendRedirect(req.getContextPath()+"/scope/scope.jsp");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doPost(req, resp);
        }
    }
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <%
            pageContext.setAttribute("pageContext","pageContext值");
        %>
        <%=pageContext.getAttribute("pageContext")%><br>
        <%=request.getAttribute("req")%><br>
        <%=session.getAttribute("session")%><br>
        <%=application.getAttribute("application")%><br>
    </body>
    </html>
    
    --------------- 我每一次回头,都感觉自己不够努力,所以我不再回头。 ---------------
  • 相关阅读:
    解决SecureCRT中文显示乱码
    最新ubuntu10.10更新源
    向linux内核添加系统调用新老内核比较
    Field requires API level 5 (current min is 1) 问题的解决
    ubuntu 搜索文件方法(find命令)
    ubuntu12.04终端全屏
    .classpath 文件中的excluding属性
    eclipse中的.project 和 .classpath文件的具体作用
    Windows Mobile项目编译很慢情况的解决(VS2008)
    windowsphone7高级编程中提到的地址
  • 原文地址:https://www.cnblogs.com/zjw-blog/p/13900026.html
Copyright © 2011-2022 走看看