JavaWeb学习之路(四)——JSP
本文发布于1423 天前,最后更新于748天前,其中的信息可能已经有所发展或是发生改变。

初识JSP

什么是Java Server Pages?

JSP 简介 | 菜鸟教程 (runoob.com)

JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。

本质

其本质还是servlet

  • java代码会被原封不动地输出,HTML代码会被转化:
  out.write("\n");
  out.write("\n");
  out.write("<html>\n");
  out.write("  <head>\n");
  out.write("    <title>$Title$</title>\n");
  out.write("  </head>\n");
  out.write("  <body>\n");
  out.write("  $END$\n");
  out.write("  </body>\n");
  out.write("</html>\n");

JSP的基础语法

  • java语法都支持,还拥有一些扩充语法

JSP表达式

  • 作用:将程序的输出,输出到客户端
  • 语法: <%= 表达式%>
<%= new java.util.Date()%>
<%
    int sum = 0;
    for (int i = 0; i < 100; i++) {
        sum += i;
    }
    out.println("<h1>"+sum+"</h1>");
%>

<%
    for (int i = 0; i < 100; i++) {
        %>
<h1>Hello World <%=i%></h1>
<%
    }
%>
out.write("\r\n");
out.write("\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("    <title>Title</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.print( new java.util.Date());
out.write('\r');
out.write('\n');

int sum = 0;
for (int i = 0; i < 100; i++) {
    sum += i;
}
out.println("<h1>"+sum+"</h1>");

out.write('\r');
out.write('\n');

for (int i = 0; i < 100; i++) {

    out.write("\r\n");
    out.write("<h1>Hello World ");
    out.print(i);
    out.write("</h1>\r\n");

}

out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>\r\n");

JSP声明

jsp声明会被编译到java类中,其他的会被生成到jspService方法中

<%!
    static {
        System.out.println("Loading Servlet");
    }
    private int globalVar = 0;
    public void kkk(){
        System.out.println("进入了kkk方法");
    }
%>

EL表达式

EL表达式详解浅然的专栏-CSDN博客el表达式

${}等价于<%=%>“`

  • 如果EL表达式无效,需要在头部配置
  <%@page isELIgnored="false" %>

注释

<%--注释--%>

指令

<%@page 指令 %>

错误页面配置

  • 直接在页面内配置
<%@page errorPage="error/errorPage.jsp" %>
  • web.xml配置
  <web-app>
      <error-page>
          <error-code>404</error-code>
          <location>/error/errorPage.jsp</location>
      </error-page>
      <error-page>
          <error-code>500</error-code>
          <location>/error/errorPage.jsp</location>
      </error-page>
  </web-app>

包含页面

  • 会将页面合二为一
<%@include file="index.jsp" %>
  • 拼接页面,本质还是几个(一般用这个,灵活性更高)
<jsp:include page="index.jsp"/>

九大内置对象

  • pageContext 存东西
  • Request 存东西
  • Response
  • Session 存东西
  • Application[ServletContext] 存东西
  • config[ServletConfig]
  • out 输出内容
  • page 几乎不用
  • exception
<%
    pageContext.setAttribute("name1", "HUII");    // 保存的数据只在一个页面中有效
    request.setAttribute("name2", "HUII");        // 只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3", "HUII");        // 只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4", "HUII");    // 只在服务器中有效,从打开服务器到关闭服务器
%>

脚本片段中的代码会被原封不动地生成到JSP.java中

要求:Java语法正确

<%
    String name1 = (String) pageContext.findAttribute("name1");
    String name2 = (String) pageContext.findAttribute("name2");
    String name3 = (String) pageContext.findAttribute("name3");
    String name4 = (String) pageContext.findAttribute("name4");
    String name5 = (String) pageContext.findAttribute("name5");        // 不存在
%>
<h1>取出的值</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3>${name5}</h3>
  • 如果不使用EL表达式,而是使用<h3><%=name5%></h3>,则会出现:
  • 页面转发
  <%
      pageContext.forward("/success.jsp");
  %>

JSP标签、JSTL标签、EL表达式

EL表达式

  • 获取数据
  • 执行运算
  • 获取web开发的常用对象

JSP标签【几乎不用】

  • include
  <%@include file="index.jsp" %>
  • 转发、传值
  <jsp:forward page="index.jsp">
      <jsp:param name="value" value="valvalue"/>
  </jsp:forward>

对应页面取值

  <%=request.getParameter("value")%>

JSTL表达式

  • JSP 标准标签库(JSTL) | 菜鸟教程 (runoob.com) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。 JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
  • 核心标签
  • 格式化标签
  • SQL 标签
  • XML 标签
  • JSTL 函数 弥补了html的不足
  • 引入jstl核心标签库
  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

常用:c:forEach

JavaBean

实体类

JavaBean有特定的写法

  • 必须有一个无参构造
  • 属性必须私有化
  • 必须有对应的get/set方法

一般用来和数据库的字段做映射 ORM

ORM:对象关系映射

  • 表—>类
  • 字段—>属性
  • 行记录—对象、
package top.huii.pojo;

public class People {
    private int id;
    private String name;
    private int age;
    private String address;

    public People(int id, String name, int age, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "People{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}
本文作者: HUII
本文链接: https://www.huii.top/1836.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自飞一网 !部分图片来源见水印或引用。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇