Java Web之JSP元素

一、JSP介绍
1、什么是JSP
JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
2、JSP特点
(1)能以模板化的方式简单、高效地添加动态网页内容。
(2)可利用JavaBean和标签库技术复用常用的功能代码(设计好的组件容易实现重复利用,减少重复劳动)。标签库不仅带有通用的内置标签(JSTL),而且支持可扩展功能的自定义标签。
(3)有良好的工具支持。
(4)继承了Java语言的相对易用性。
(5)继承了Java的跨平台优势,实现“一次编写,处处运行”。因为支持Java及其相关技术的开发平台多,网站开发人员可以选择在最适合自己的系统平台上进行JSP开发;不同环境下开发的JSP项目,在所有客户端上都能顺利访问。
(6)页面中的动(控制变动内容的部分)/静(内容不需变动的部分)区域以分散但又有序的形式组合在一起,能使人更直观地看出页面代码的整体结构,也使得设计页面效果和程序逻辑这2部分工作容易分离(外观视图与逻辑分离)。从而方便分配人员并发挥各自长处,实现高效地分工合作。
(7)可与其它企业级Java技术相互配合。JSP可以只专门负责页面中的数据呈现,实现分层开发。
二、创建Web项目JSPElementsDemo:
1、创建项目JSPElementsDemo:
Java Web之JSP元素_第1张图片
2、添加标签库JSTL所需要的jar包:
在WEB-INF目录里创建lib子目录,添加标准标签库jar包
标签库jar包下载地址:http://tomcat.apache.org/taglibs/standard/
在这里插入图片描述Java Web之JSP元素_第2张图片Java Web之JSP元素_第3张图片
3、在web目录创建demo01.html页面:
Java Web之JSP元素_第4张图片Java Web之JSP元素_第5张图片4、在web目录里创建demo02.jsp页面:
Java Web之JSP元素_第6张图片

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>demo02</title>
</head>
<body>
<%--包含指令--%>
<%@include file="demo01.html" %>

<%--脚本元素--%>
<%
    String msg1 = "Welcome to JSP world!";
%>
<%--表达式元素--%>
<h3><%=msg1%>
</h3>

<%--采用标签库和表达式语言(EL:Expreddion Language)--%>
<c:set var="msg2" value="Welcome"/>
<c:out value="${msg2}"/>

<c:set var="age" value="20"/>
<c:if test="${age >= 18}">
    <h3>欢迎访问本网站</h3>
</c:if>
<c:if test="${age < 18}">
    <h3>本网站不欢迎你</h3>
</c:if>

<c:choose>
    <c:when test="${age >= 18}">
        <h3>欢迎访问本网站</h3>
    </c:when>
    <c:otherwise>
        <h3>本网站不欢迎你</h3>
    </c:otherwise>
</c:choose>

<c:set var="sum" value="0"/>
<c:forEach var="i" begin="1" end="100">
    <c:set var="sum" value="${sum + i}"/>
</c:forEach>
<h3>1+2+...+100=<c:out value="${sum}"/></h3>
</body>
</html>

运行程序,查看效果:
Java Web之JSP元素_第7张图片5、JSP动作元素(action)
在web目录里创建demo03.jsp和demo04.jsp页面:
Java Web之JSP元素_第8张图片Java Web之JSP元素_第9张图片Java Web之JSP元素_第10张图片
运行程序,查看效果:
Java Web之JSP元素_第11张图片6、转发动作元素jsp:forward演示:
在web目录里创建demo03.jsp和demo04.jsp页面:
Java Web之JSP元素_第12张图片
Java Web之JSP元素_第13张图片Java Web之JSP元素_第14张图片运行程序,查看效果:
Java Web之JSP元素_第15张图片7、useBean动作元素演示:
在src里创建net.cw.bean包,在里面创建User实体类:
Java Web之JSP元素_第16张图片

package net.cw.bean;

/**
 * 功能:用户实体类
 * 作者:cw
 * 日期:2019年9月12日
 */

public class User {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

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

    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;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

Java Web之JSP元素_第17张图片

<%@ page import="net.cw.bean.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>demo07</title>
</head>
<body>
    <%--创建用户实体对象--%>
    <jsp:useBean id="user" class="net.cw.bean.User" scope="page"/>

    <%--设置实体属性--%>
    <jsp:setProperty name="user" property="id" value="1"/>
    <jsp:setProperty name="user" property="username" value="howard"/>
    <jsp:setProperty name="user" property="password" value="903213"/>

    <%--获取实体属性值--%>
    <h3>id:<jsp:getProperty name="user" property="id"/></h3>
    <h3>username:<jsp:getProperty name="user" property="username"/></h3>
    <h3>password:<jsp:getProperty name="user" property="password"/></h3>

    <%--输出用户实体对象--%>
    <h3><%=user%></h3>

    <hr>
    <%
        User u = new User();
        u.setId(2);
        u.setUsername("mike");
        u.setPassword("12345");
    %>
    <h3>id:<%=u.getId()%></h3>
    <h3>username:<%=u.getUsername()%></h3>
    <h3>password:<%=u.getPassword()%></h3>
</body>
</html>

启动服务器,查看效果:
Java Web之JSP元素_第18张图片8、注释元素(comment):
Java Web之JSP元素_第19张图片

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>demo08</title>
</head>
<body>
    <!--这是客户端注释-->
    <%--声明元素--%>
    <%
        int age = 16;
    %>
    <%--表达式元素--%>
    <h3>你的年龄:<%=age%></h3>

    <%--脚本元素--%>
    <% if (age >=18){%>
        <h3>欢迎访问本网站</h3>
    <%}else {%>
    <h3>本网站不欢迎你</h3>
    <%}%>

    <%--脚本元素--%>
    <%
        if(age >= 18){
            out.print("

欢迎访问本网站

"
); }else { out.print("

本网站不欢迎你

"
); } %> </body> </html>

启动服务器,查看效果:
Java Web之JSP元素_第20张图片
Java Web之JSP元素_第21张图片课后作业:编写JSP页面,计算2000~2019年期间有几个闰年。使用表达式输出结果。
Java Web之JSP元素_第22张图片

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">

    <title>demo09</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->

</head>

<body>
<%
    int count1 = 0;
    for (int i = 2000; i <= 2019; i++) {
        if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
            count1++;
        }
    }
%>
<%!
    int getLeapYear(int first,int last){
        GregorianCalendar gc=new GregorianCalendar();
        //日期对象,isLeapYear判断是否是闰年。
        int count=0;
        for(int i=first;i<=last;i++){
            if(gc.isLeapYear(i)){
                count++;
            }
        }
        return count;
    }
%>
从2000年~2019年,共有<%=count1%>个闰年
<br>
从2000年~2019年,共有<%=getLeapYear(2000, 2019)%>个闰年

</body>
</html>

运行程序,查看结果:
Java Web之JSP元素_第23张图片JetBrains系列产品教程(IntelliJ IDEA、PyCharm、Webstorm)
https://editor.csdn.net/md/?articleId=104691320

你可能感兴趣的:(Java,Web学习)