`

Java Web快速入门——第3讲

阅读更多

1、include指令
    作用:把多个文件中需要共享的代码放在单独的文件中,然后在需要的时候使用该指令引入这个文件。典型的应用,把网站的头部和版权信息放在单独的文件中,在其他文件中包含这两部分。
    基本的语法格式:
        <%@ include file="目标文件"%>
    file属性指出目标文件。
    例:把index.jsp和register.jsp中的共同部分做成单独的文件header.jsp(后缀名不一定是.jsp),然后在index.jsp和register.jsp中调用。
    header.jsp中的内容如下:

<%@ page contentType="text/html;charset=gb2312"%>
<table  align="center" width=780>
   <tr height="100">
      <td align="center"><h1>电子书店</h1></td>
   </tr>
   <tr>
      <td align="center">
         <!-- 超链接的基本格式  -->
         <a href="register.jsp">注册</a> 
         最新图书 最畅销图书 查询图书 修改密码 查询订单 购物车</td>
   </tr>
   <tr>
      <td><hr></td>
   </tr>

 

 

在index.jsp中引入header.jsp的代码:

<%@ page contentType="text/html;charset=gb2312"%>

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

   <tr>
      <td>
         <table>
             <tr>
                 <td>
                     <!--登录界面代码-->
                     <form action="login_process.jsp" method="post">
                        <!-- 主要是涉及提交信息,就要用到form,action决定了提交给哪个文件处理 -->
                        用户名:<input type="text" name="username" value="aaa"> <br>
                        口令:<input type="password" name="userpass" value=""> <br> 
                        <input type="submit" value="登录"><input type="reset" value="重写">
                     </form>
                 </td>
                 <td>
                      欢迎光临我们的书店!
                 </td>
             </tr>
         </table>
      </td>
   </tr>
</table>
 

 
运行过程:在转换的时候,当遇到include指令的时候会把include指令指向的目标文件的内容拷贝到当前位置,替换include指令,这样最后形成一个文件。然后才编译形成class文件,然后运行。

2、<jsp:forward>标签

   我们使用登录功能的模拟来介绍。
   首先,使用Java代码完成判断,使用<jsp:forward>完成跳转,代码:
<%@ page contentType="text/html;charset=gb2312"%>

<%
   // 先获取用户输入的用户名和口令,然后判断是否合法
   String username = request.getParameter("username");

   String userpass = request.getParameter("userpass");

   if(username.equals("zhangsan") && userpass.equals("zhangsan"))
   {
%>

       <jsp:forward page="success.jsp"/>
<%
   }else{
%>
       <jsp:forward page="index.jsp"/>
<%
   }
%>

   注意:不管跳转到success.jsp还是index.jsp,地址栏都是处理文件的名字。
   <jsp:forward>的语法格式:
       <jsp:forward page="目标文件"/>
   page属性指出转向的目标文件。最后的结束符为“/>”,斜杠不能省略。

   另外一个可以完成跳转的方式是采用response.sendRedirect()。response和request一样,都是内容对象,可以直接访问。修改上面的文件:
<%@ page contentType="text/html;charset=gb2312"%>

<%
   // 先获取用户输入的用户名和口令,然后判断是否合法
   String username = request.getParameter("username");

   String userpass = request.getParameter("userpass");

   if(username.equals("zhangsan") && userpass.equals("zhangsan"))
   {
       response.sendRedirect("success.jsp");
   }else{
       response.sendRedirect("index.jsp");
   }
%>

   <jsp:forward>和response.sendRedirect的运行效果相同(针对上面的这个例子)。
   相同点:都是转向目标文件。
   不同点:地址栏中显示的内容是不相同的,如果使用<jsp:forward>,地址栏显示当前文件的名字,如果使用response,地址栏显示的是转向后的文件的名字。执行过程不同:使用<jsp:forward>相当于一次请求,使用response相当于两次请求。
   使用<jsp:forward>的情况:
   index.jsp中输入用户名和口令,提交给login_process.jsp,服务器保存用户的输入信息,使用<jsp:forward>转向success.jsp之后,success.jsp还可以访问用户输入的信息,因为输入同一次请求。
   使用response的请求:
   index.jsp中输入用户名和口令,提交给login_process.jsp,服务器保存用户的输入信息,使用response的sendRedirect方法相当于重新向服务器发送一次请求,这样上次的请求内容(用户名和口令)就不能共享了。
  
3、<jsp:include>标签
   把index.jsp中<%@ include="header.jsp"%>替换成<jsp:include page="header.jsp"/>
   从运行效果上相同。
   不同点:1、两个文件,目标文件是单独运行的,当前文件运行到<jsp:include>标签的时候,转向执行标签所指向的目标文件,执行之后返回继续标签之后的内容。
   2、<%@ include%>指令是在编译(转换)的时候使用,<jsp:include>在运行的时候起作用。

   程序中如何选用:要导入的内容是不是每次都执行,如果每次都执行的话,应该使用<%@ include%>,如果是在特定的条件下,应该使用<jsp:include>。例如,登录之后要么转向success.jsp要么转向index.jsp,如果在程序中使用导入,应该用<jsp:include>。

4、<jsp:include>和<jsp:forward>区别

   把login_process.jsp中的<jsp:forward>替换成<jsp:include>:
<%@ page contentType="text/html;charset=gb2312"%>

<%
   // 先获取用户输入的用户名和口令,然后判断是否合法
   String username = request.getParameter("username");

   String userpass = request.getParameter("userpass");

   if(username.equals("zhangsan") && userpass.equals("zhangsan"))
   {
%>

       <jsp:include page="success.jsp"/>
<%
   }else{
%>
       <jsp:include page="index.jsp"/>
<%
   }
%>
    运行效果是相同的。但是有不同点,修改代码如下:
<%@ page contentType="text/html;charset=gb2312"%>
处理文件的前半部分<br>
<%
   // 先获取用户输入的用户名和口令,然后判断是否合法
   String username = request.getParameter("username");

   String userpass = request.getParameter("userpass");

   if(username.equals("zhangsan") && userpass.equals("zhangsan"))
   {
%>

       <jsp:include page="success.jsp"/>
<%
   }else{
%>
       <jsp:include page="index.jsp"/>
<%
   }
%>
<br>处理文件的后半部分

两次运行结果不相同。
分析原因:
   <jsp:forward>:先执行标签之前的内容,遇到标签的时候转向执行目标文件,执行完不返回,显示的内容为目标文件的内容,标签之前的内容执行,但是不显示。标签之后的内容不会执行,当然更不会显示。
   <jsp:include>:先执行标签之前的内容,遇到标签转向执行目标文件,执行完返回,继续执行标签之后的内容,显示的内容为:标签之前的内容+目标文件的内容+标签之后的内容,标签的前后都执行,都显示。

5、使用标准标签库(JSTL)完成登录的判断过程
   如何使用标签标签库:(1)得到标签库的实现文件,jstl.jar和standard.jar,放在WEB-INF下面的lib子文件夹。(2)在JSP文件中要声明标签库,通过tablib指令进行声明:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> (3)使用标签:<c:if test="">  </c:if>
   要完成判断,可以使用标签标签库中的c:if标签。标签的基本格式:
   <c:if  test="">条件成功要执行的内容</c:if>
   test表示测试条件,测试条件可以写常量,可以是表达式语言(EL,主要用于输出),主要使用表达式语言。
   例如:要判断用户提交的用户名和口令是否是zhangsan。
   <c:if test="${param.username==\"zhangsan\" && param.userpass==\"zhangsan\"}">
       <jsp:forward page="success.jsp"/>
   </c:if>

   注意:添加完标准标签库之后,需要重新启动服务器。

6、使用session保存登录后的信息
   在网站中设置了application session request pageContext对象保存内存中的信息。application是网站所有用户共享的存储变量的位置。session是网站为每个访问网站的人创建的,每个用户对应一个session,也是存放变量的位置。request是为每个用户的每次请求设置的存储信息的位置,每次访问会有一个request。pageContext是每次访问的每个页面对应一个。常用的session和request。多次访问之间要共享信息可以使用session,如果在某次访问的多个页面之间共享信息使用request(例如,使用jsp:forwrad转向的文件和当前文件就属于同一次请求)。

   登录后的用户信息应该放在session中。

   要在这些范围中保存信息,可以使用标准标签库中的<c:set>标签完成。
   <c:set>的基本语法格式:
   <c:set var="变量的名字" scope="范围" value="值"/>
  
   要把用户名放到session中:
   <c:set var="username" scope="session" value="${param.username}"/>

分享到:
评论

相关推荐

    Java Web快速入门——全十讲

    ### Java Web快速入门——全十讲 #### 一、Java与Web开发的融合:JavaEE标准框架 在探讨Java Web开发之前,我们首先要理解Java在Web领域的定位。Java不仅仅是一种编程语言,它还是一套完整的生态系统,适用于各种...

    Java_Web快速入门——全十讲

    以上是对“Java_Web快速入门——全十讲”的部分知识点进行了详细的总结,这些知识点涵盖了 Java Web 技术的基础概念、核心技术和实践应用,对于初学者来说是非常宝贵的参考资料。接下来的几讲会继续深入探讨更高级的...

    JSP快速入门教程——全十讲

    **第三讲:JSP内置对象** JSP提供了九个内置对象,如request、response、session、application等,它们在处理用户请求和响应时扮演重要角色。本讲将详细介绍每个内置对象的功能及使用方法。 **第四讲:JSP与HTML的...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、...

    Java Web基础入门第七十九讲 Filter(过滤器)——Filter(过滤器)常见应用(三):权限管理系统(下)-附件资源

    Java Web基础入门第七十九讲 Filter(过滤器)——Filter(过滤器)常见应用(三):权限管理系统(下)-附件资源

    《java web编程宝典-十年典藏版》 源码3

    "java实例3"可能表示这是系列中的第三个实例,可能涵盖了一些基础的Java Web开发技术,如Servlet、JSP(JavaServer Pages)或者MVC(Model-View-Controller)设计模式。Servlet是Java Web应用的基础,用于接收和响应...

    Java Web入门经典第二章源代码

    第三篇为“高级应用篇”,主要包括在互联网中操作文件资源、利用JFreeChart实现动态图表、在JSP中操作XML、完美体验Ajax技术、MVC架构实现者——Struts 2框架、数据库持久化利器——Hibernate技术、简化企业开发瑰宝...

    《Java高手真经:Java Web高级开发技术》读书笔记模板.pptx

    * 第3课:EJB快速入门 + 开始了解EJB + 配置EJB运行环境——JBoss服务器 + 配置EJB集成开发环境——Eclipse+JBoss Tools插件 + EJB快速上手——HelloWorld入门实例 * 第4课:会话Bean(Session Bean)——发布...

    深入体验Java Web开发内幕

    【内容简介】  本书深刻且通俗地揭示Java Web开发内幕,使您由内而外地明白使用Java进行Web应用开发的全过程——从XML基础知识到HTTP详述及相关体验,从用Tomcat配置Web站点到HttpServletResponse和...

    《java web编程宝典-十年典藏版》 源码

    《Java Web编程宝典——十年典藏版》是一本深入探讨Java Web开发的权威书籍,其源码提供了丰富的实例,帮助读者深入理解并实践相关技术。这本书覆盖了从基础到高级的Java Web开发各个方面,包括Servlet、JSP、Java...

    Java EE 框架整合开发⼊⻔到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf

    这份文档名为《Java EE 框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf》,它显然是关于Java EE中流行的三个框架整合使用的教程。这三个框架分别是Spring、Spring MVC和MyBatis,...

    JAVA入门教程21天学通JAVA2第三版

    ### JAVA入门教程21天学通JAVA2第三版——关键知识点解析 #### 一、JAVA入门书籍推荐 - **《Java语言》**:适合初学者,全面覆盖Java基础语法及面向对象的基本概念。 - **《Thinking in Java》**:虽然内容深入且...

    重磅!《Go Web编程实战派从入门到精通》随书源码开源啦,Go语言-Web-goWebActualCombat.zip

    4. **数据库操作**:Go语言有许多第三方库用于数据库操作,如Gorm、sqlx等,它们提供了一种更友好的方式来执行SQL查询和管理数据库连接。 5. **并发编程**:Go语言的goroutine和channel是其并发编程的核心,通过...

    云应用开发 ——Google App Engine & Google Web Toolkit入门指南

    ### 云应用开发 ——Google App Engine & Google Web Toolkit入门指南 #### 第1章 应该了解下 ##### 1.1 云基本知识 云计算是一种通过互联网提供按需计算资源和服务的方式,包括网络、服务器、存储、应用程序和...

    Java基础入门教程

    还会介绍如何编写并运行第一个Java程序——经典的"Hello, World!"示例。 3. **JAVA基本程序实践**:在理论知识的基础上,这部分将深入到实际编程中,涵盖类和对象的概念,这是面向对象编程的基础。学习者会了解如何...

    Java语言程序设计教程(Java 7)——入门与提高篇06

    第6章介绍了几个Java的高级应用,包括多线程、网络编程和GUI编程。多线程,介绍Java如何对多线程提供支持,以及如何使用Java编写多线程应用;网络编程,介绍如何通过HTTP协议访问Web应用,如何通过Socket编程实现C/S...

Global site tag (gtag.js) - Google Analytics