一把LOL的时间学会开发JavaServer页面(JavaWeb学习笔记-JSP基础入门)

一把LOL的时间学会开发JavaServer页面(JavaWeb学习笔记-JSP基础入门),第1张

一把LOL的时间学会开发JavaServer页面(JavaWeb学习笔记-JSP基础入门)

文章目录
  • How to develop JavaServer Pages?
    • 相关概念:
      • JSP:
      • JavaBean:
      • EL表达式:
      • JSTL:
    • 如何写一个JavaBean?
    • 使用EL表达式获取JavaBean的属性
      • 在作用域中寻找属性的顺序:
        • JavaWeb的四大作用域:
    • 使用JSP标准标签库
    • 使用JSP标签
      • 五类JSP标签:
        • 彩JSP expression与JSP declaration的区别!!!
    • 使用standard JSP标签访问JavaBean
      • getProperty与setProperty:
    • JSP转义字符
    • 在JSP中导入其他JSP文件
      • 引入header.html与footer.html
      • 引入JSP文件的三种方式
        • 运行时包含与编译时包含的区别
    • 常见的JSP错误
    • 总结


How to develop JavaServer Pages? 相关概念:

想详细了解的同学推荐下面博主的文章~

盛JSP简介|菜鸟教程 https://www.runoob.com/jsp/jsp-intro.html
盛JavaBean详解-CSDN(顺其自然)https://blog.csdn.net/fuhanghang/article/details/84074561
盛Java Web之EL表达式和JSTL-CSDN(XeonYu)https://blog.csdn.net/yuzhiqiang_1993/article/details/81274676

JSP:

JSP本质上是一个Servlet,JSP负责与用户交互,将最终的界面呈现给用户,JSP在HTML中嵌入了Java程序,属于HTML与Java代码的混合文件。
当服务器接收到xxx.jsp的请求时,会将其交给JSP引擎,将JSP翻译为一个Servlet文件,再由Web容器调用Servlet完成响应。

JavaBean:

JavaBean是一个符合一定规范的Java类,通常用于封装数据,在JSP中可以通过标签只用JavaBean。

EL表达式:

全称expression Language-表达式语言,用于在JSP页面中取值。

JSTL:

全称JavaServerPages Standard Tag Libary-JSP标准标签库,用于简化JSP代码,常与EL表达式结合使用,EL表达式负责获取属性值,JSTL负责业务逻辑。


如何写一个JavaBean?

How to code a JavaBean?
JavaBean通常应该符合以下特点:

  1. JavaBean必须包含一个无参的构造方法。
  2. 属性必须是私有的(private),对私有的属性必须有Geter与Seter方法。
  3. 必须实现Serializable接口。
import java.io.Serializable;

public class User implements Serializable {
    private String username;
    private String password;

    public User() {}

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

使用EL表达式获取JavaBean的属性

How to use EL to get attributes and JavaBean properties?

  • 如何取值 How to display an attribute?
    EL表达式形式:${attribute}。
    Servlet code:
    int num = 666;
    Integer number = new Interger(num);
    request.setAttribute("number", number);
    
    JSP code:

    The number is ${number}

  • 如何取某一属性的值 How to display the property of an attribute?
    EL表达式形式:${attribute.property}。
    Servlet code:
    User user = new User(username, password);
    request.serAttribute("user", user)
    
    JSP code:

    Hello ${user.username}

在作用域中寻找属性的顺序:

使用EL的时候,默认会以一定顺序搜索四个作用域,将最先找到的变量值显示出来。
搜索顺序:page --> request --> session --> application。

ScopeDescriptionpageThe bean is stored in the implicit PageContext object.requestThe bean is stored in the HttpServletRequest object.sessionThe bean is stored int the HttpSession object.applicationThe bean is stored in the ServletContext object.

推荐文章:

盛RequestDispatcher实现请求转发 http://c.biancheng.net/view/4013.html
盛JavaWeb的四大作用域-小白一枚 https://www.cnblogs.com/jerry123/p/6974184.html

JavaWeb的四大作用域:
  1. PageContext域:仅作用于当前JSP页面。
  2. ServletRequest域:作用域整个请求链,比如请求转发requset.getRequestDispatcher(url).forward(request, response);。
  3. HttpSession域:作用范围是一次会话。
  4. ServletContext域:作用范围是整个Web应用。
使用JSP标准标签库

How to use the core JSTL library?

  • 使用JSTL标签之前,必须导入两个jar包依赖。
    1. jstl-impl.jar
    2. jstl-api.jar
  • 在JSP页面加入JSTL 标签之前,要先写taglib指令。
    code a taglib directive:
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
  • JSTL标签示例:
    if 语句:
    
    	

    Welcome Zhang san!


使用JSP标签

How to use JSP tags?
使用JSP标签不需要使用taglib指令导包,直接就可以使用。

五类JSP标签: TagNamePurpose<%@ %>JSP directiveJSP指令,用来导包,配置JSP的环境等等<% %>JSP scriptlet用来包含Java代码<%= %>JSP expressionJSP表达式,用来展示字符串或者表达式<%-- --%>JSP commentJSP代码的注释<%! %>JSP declarationJSP声明,用来声明变量或者方法
  • JSP表达式<%= %>可以是任何一个类型,但最终都会转换为字符串,不用在结尾写分号。
彩JSP expression与JSP declaration的区别!!!
  • 在JSP转换成Servlet时,JSP scriptlet中的Java代码会变为一个方法,Java代码中声明的变量是局部变量。
  • 与JSP scriptlet不同的是,写在JSP declaration中的Java代码,其中代码中声明的变量会作为全局变量。

敖比如:
定义如下的Java代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    JSP scriptlet


    <%
        int a = 1;
        a++;
    %>
    

a的值是:<%=a%>

访问页面:

刷新页面:

可以看到刷新页面a的值不会改变,每次访问页面a的初值都为1,a++后变为2。
但是!!!
先定义JSP声明<%! int a = 1; %>,再执行a++这段Java代码。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    JSP declaration


    <%!
        int a = 1;
    %>
    <%
        a++;
    %>
    

a的值是:<%=a%>

访问页面:

刷新页面:

可以看到刷新一次页面,a的值会在前一次的基础上加1,这是因为JSP声明中的代码在转换为Servlet后,变量会成为全局变量,作为转换后的类的属性值,每次访问JSP页面,a的值不会刷新,仅会执行后面的Java代码段~


使用standard JSP标签访问JavaBean

How to use standard JSP tags with JavaBeans?
在EL与JSTL被广泛用于JSP页面之前,访问JavaBean还可以使用standard JSP标签。

  • 使用EL访问JavaBean:

    username:${user.username}

    password:${user.password}

  • 使用standard JSP访问JavaBean:
    
    

    username:

    password:

    使用useBean时,如果没有找到指定对象,会自动new一个新对象。
  • 尽量不要使用standard JSP tag,对null值不会自动处理,对用户不友好。
  • 创建一个JavaBean对象
    
    
    Scope values: ValueDescriptionpage将JavaBean保存在pageContext对象中(默认会保存在此)request将JavaBean保存在HttpServletRequest对象中session将JavaBean保存在HttpSession对象中application将JavaBean保存在ServletContext对象中
getProperty与setProperty:
  • getProperty tag获取JavaBean属性
    
    
  • setProperty tag设置JavaBean属性
    
    

JSP转义字符

Escape sequences within attributes
在JSP中,<%、%>、'、"、 都有特殊的含义和用途,在使用它们时应修改成转义字符。

CharacterEscape sequence''""\<%<%%>%>
在JSP中导入其他JSP文件

How to include a file in a JSP?
推荐文章:

盛jsp中引入其他jsp文件-博客园 https://www.cnblogs.com/liangb/p/10017101.html

如果一段代码在JSP页面中重复使用,比如HTML页面与JSP页面的头部或者尾部往往都是重复的代码,为了解决代码复用的问题,JSP页面可以引入其他JSP或者HTML文件。

引入header.html与footer.html

A header file named header.html




    
    
    


A footer file named footer.jsp

<%@ page import="java.util.GregorianCalendar, java.util.Calendar" %>
    <%
        GregorianCalendar currentDate = new GregorianCalendar();
        int currentYear = currentDate.get(Calendar.YEAR);
    %>
    

© Copyright <%= currentYear %>

Zhang san & Associates

在JSP页面中将上面两个文件引入

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%--导入header.html--%>
<%@ taglib prefix="c" url="http://java.sun.com/jsp/jstl/core" %>


    
    
    
<%--导入footer.jsp--%>

引入JSP文件的三种方式 MethodSyntaxinclude directive(编译时包含)<%@ include file="fileLocationAndName" %>standard JSP(运行时包含)JSTL tag(运行时包含) 运行时包含与编译时包含的区别

The difference of compile-time and runtime

  • include指令是编译时包含,也叫静态包含,包含了几个JSP页面,在转换成Servlet时就会生成几个.class文件,被包含的页面都不会重新编译。
  • 其余两种方式为运行时包含,也叫动态包含,每次加载主页面的时候,被包含的页面都需要重新编译,不管包含了几个JSP页面,最终转化为Servlet时只会生成一个.class文件。

常见的JSP错误

Common JSP errors:

  • HTTP Status 404 - File Not Found Error
  • HTTP Status 500 - Internal Server Error

在查找JSP页面的错误时应该留意url是否正确;HTML,JSP,Java class文件是否在正确的位置。


总结

Summary
截至目前JavaWeb的四大作用域只使用了其中的request用来在不同的页面与Servlet之间转发数据,使用Session域保存数据的方法会在后续的文章中介绍。
同时目前只是对EL与JSTL进行了简单的介绍,关于它们的详细内容,也会在后面的文章中给出。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5691578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存