zoukankan      html  css  js  c++  java
  • JSP案例

    • JSP三种声明:

    第一种形式 java代码片断 <% %>

    第二种形式 jsp表达式 <%= %>

    第三种形式 jsp声明 <%! %>

     

    • page指令的session属性:

    session属性的取值为true(缺省)/false。

    如果值为false,则对应的servlet代码 当中不会生成声明和创建session的代码。

    也就是说,不能够使用session隐含对象了。

     

    • page指令的isErrorPage属性和errorPage属性

    jsp03.jsp:

    <%@ page errorPage="errorHandler.jsp"  contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <html>
    <head>
        <title>Insert title here</title>
    </head>
    <body style="font-size:30px;">
        <%
          String num=request.getParameter("num");
          out.println(Integer.parseInt(num)+100);
         %>
    </body>
    </html>

    errorHandler.jsp:

    <%@  page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" isErrorPage="true" %> 
     <!-- exception隐含对象 -->
    <html>
    <head>
        <title>Insert title here</title>
    </head>
    <body style="font-size:30px;">
     
          出现异常   
            <font> <%=exception.getMessage()%> </font>  
    </body>
    </html>

    访问:http://localhost:8080/xxx/jsp03.jsp?num=abc

    • 对JSP配置参数:

    jsp:

    <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <html>
    <head>
        <title>Insert title here</title>
    </head>
    <body style="font-size:30px;">
        address:
        <%=config.getInitParameter("address") %>
    </body>
    </html>

     

    web.xml部分:

     

    <servlet>
       <servlet-name>jsp04</servlet-name>
       <jsp-file>/jsp04.jsp</jsp-file>
       <init-param>
        <param-name>address</param-name>
        <param-value>shanghai</param-value>
       </init-param>
      </servlet>
      <servlet-mapping>
       <servlet-name>jsp04</servlet-name>
       <url-pattern>/abc.html</url-pattern>
      </servlet-mapping>

    访问http://localhost:8080/web09/abc.html

    • 隐藏对象pageContext

    jsp05:

    <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <html>
    <head>
        <title>Insert title here</title>
    </head>
    <body style="font-size:30px;">
        <%
         pageContext.setAttribute("username","cj");
         request.setAttribute("pwd","123");
         %>
         username:
         <%=pageContext.getAttribute("username")%>
         pwd:
         <%=request.getAttribute("pwd")%>
         <a href="jsp06.jsp">链接</a>
    </body>
    </html>
    
     

    jsp06:

    <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <html>
    <head>
        <title>Insert title here</title>
    </head>
    <body style="font-size:30px;">
        username:
        <%=pageContext.getAttribute("username")%>
         pwd:
         <%=request.getAttribute("pwd")%>
    </body>
    </html>

    测试

    一个JSP对应一个pageContext对象,所以在jsp06.jsp中访问不到jsp05.jsp中pageContext 对象中的数据username;

    同时,因为点击“链接”是一次新请求,所以jsp06.jsp中也访问不到jsp05.jsp中request对象 中的数据username;

    放入session中是可以的。

    如下jsp隐藏对象访问范围从小到大

    pageContext 只有对应的JSP实例自己可以访问,生命周期从对应的JSP对象创建到JSP对象消亡。

    request 一次请求能访问,生命周期在一起请求和响应期间。

    session 一次会话期间能访问,多次请求和响应期间都存在。

    ServletContext 整个应用内部所有组件都能访问,除非服务器关闭,否则一直存在。

     

    • 活动元素

    <jsp:forward page=""/> 转发,page属性指定转发的地址

    jsp07:

     

    <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
       <html>
       <head>
           <title>Insert title here</title>
       </head>
       <body style="font-size:30px;">
            <%
            request.setAttribute("username","cj");
            %>
          <jsp:forward page="jsp08.jsp"></jsp:forward>
       </body>
       </html>

    jsp08:

    <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
      <html>
      <head>
        <title>Insert title here</title>
      </head>
      <body style="font-size:30px;">
       username:
           <%=request.getAttribute("username")%>
      </body>
      </html>


     

    • <jsp:include page=""/> 一个jsp在运行过程当中,调用另外一个jsp

    jsp09:

    <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
     <html>
     <head>
         <title>Insert title here</title>
     </head>
     <body style="font-size:30px;">
      jsp09..<br/>
      <jsp:include page="jsp10.jsp">
       <jsp:param value="123" name="pwd"/>
      </jsp:include>
          <br/>
          jsp09 other..
     </body>
     </html>

     

    jsp10:

    <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
     <html>
     <head>
         <title>Insert title here</title>
     </head>
     <body style="font-size:30px;"> 
          pwd:
          <%=
          request.getParameter("pwd")
          %>
     </body>
     </html>

     

    • <jsp:useBean id="" scope="" class=""/> 在指定的范围绑订一个对象。

     

    范围指的是四个对象pageContext,request,session,servletContext。

    也就是说scope的值可以是"page","request","session","application"。

     

    两段代码是等价的:

     

    • <jsp:getProperty/>

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

    <jsp:setProperty name="" property="" param=""/> 依据请求参数给属性赋值。

    <jsp:setProperty name="" property="*"/> 使用"自省机制"给属性赋值。

    34.新建bean.User.java

    35.新建jsp11.jsp

     

    测试:

     

    • Jsp中的注释

    <!-- <%=new Date()%> --> 注释中的代码会执行,但不会在页面上输出。

    <%--xxxx--%> 注释中的代码不会执行,也不会在页面上输出。

     

    源代码:https://files.cnblogs.com/files/C3054/web05.rar

  • 相关阅读:
    汇编学习笔记(25)
    在QT C++中调用 Python并将软件打包发布(裸机可运行)
    集合类
    解决python matplotlib 中文字体的显示乱码-Windows系统;RuntimeWarning: Glyph
    元数据库设计
    解决方案sln工程csproj
    托管代码和非托管代码的区别
    IIS安装和使用URL重写工具-URL Rewrite
    SSL证书及使用
    rpc和rpcwithcert两个虚拟目录
  • 原文地址:https://www.cnblogs.com/C3054/p/4277447.html
Copyright © 2011-2022 走看看