9.JSP技术

本文详细介绍了JSP、EL和JSTL的基础概念及应用。通过示例展示了EL中如何检查对象是否为null或空,以及如何获取和使用域中的值。接着探讨了JSTL的if、choose和forEach标签的用法,并提供了JSP、EL和JSTL结合的案例,包括表格渲染和条件判断。最后,提到了MVC开发模式和三层架构在Web开发中的重要性。

目录

一、JSP(java服务器端页面)。

二、EL(表达式语言)。 

 (1)字符串、数组、集合对象(是否为null或者长度是否为0的原因)

(2)EL获取值的使用案例。

(3)隐式对象(内置对象)的使用。

三、JSTL(jsp标准标签库)。

(1)标签-if。

(2)标签-choose。

(3)标签-forEach。

四、JSP+EL+JSTL——结合案例。

 五、MVC开发模式。

 六、三层架构。


一、JSP(java服务器端页面)。

3b39039e583d4cf1bfffaf462d7591e9.png

34dda4062e954aae94db23f052f67214.png

注意:在jsp页⾯中可以直接使⽤session对象(jsp的内置对象),也可以通过pageContext.getSession()或者request.getSession重新获取session对象。

二、EL(表达式语言)。 

注意:暂时只知道只能在JSP页面使用。

81688f2508f1469ca546d520742073df.png

27f05ee04a0440a4ae5d8232aac1a0fd.png

 (1)字符串、数组、集合对象(是否为null或者长度是否为0的原因)

//list集合类对象
    List list = new ArrayList<String>();
    System.out.println(list+"以及"+list.size());//[]以及0
//Map集合类对象
    Map map =new HashMap();
    System.out.println(map+"以及"+map.size());//{}以及0
//字符串对象
    String str = "";
    System.out.println(str+"以及"+str.length());//以及0
    String str1 = " ";
    System.out.println(str1+"以及"+str1.length());//(有空格) 以及1
//数组对象
    int[] ints = new int[2];
    System.out.println(ints+"以及"+ints.length);//[I@4180ae00以及2
    int[] i = {};
    System.out.println(i+"以及"+i.length);//[I@690b2ce7以及0

(2)EL获取值的使用案例。

package EL_获取域中存储的值_对象值;
import java.text.SimpleDateFormat;
import java.util.Date;
public class User {
    private String name;
    private int age;
    private Date birthday;
    /**
     * 该类就是javaBean类
     * 下面那个方法就是逻辑视图。
     * @return
     */
    public String getBirStr(){
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(birthday);
    }
    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 Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                '}';
    }
}
<%@ page import="EL_获取域中存储的值_对象值.User" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.*" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/8/2
  Time: 13:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>el4</title>
</head>
<body>
<%
    //User类对象
    User user = new User();
    user.setName("张三");
    user.setAge(15);
    user.setBirthday(new Date());
    request.setAttribute("u",user);
    //list集合类对象
    List list = new ArrayList<String>();
    System.out.println(list+"以及"+list.size());//[]以及0
    list.add("aaa");
    list.add("bbb");
    list.add(user);
    request.setAttribute("list",list);
    //Map集合类对象
    Map map =new HashMap();
    System.out.println(map+"以及"+map.size());//{}以及0
    map.put("sname","李四");
    map.put("gendar","男");
    map.put("user",user);
    request.setAttribute("map",map);
    //字符串对象
    String str = "";
    System.out.println(str+"以及"+str.length());//以及0
    String str1 = " ";
    System.out.println(str1+"以及"+str1.length());//(有空格) 以及1
    //数组对象
    int[] ints = new int[2];
    System.out.println(ints+"以及"+ints.length);//[I@4180ae00以及2
    int[] i = {};
    System.out.println(i+"以及"+i.length);//[I@690b2ce7以及0
%>
<h1>获取User类对象的属性值</h1>
    ${requestScope.u}<br/>
    ${requestScope.u.name}<br/>
    ${u.age}<br/>
    ${u.birthday.month}<br/>
    ${u.birStr}<br/>
    ${u.toString()}
<h1>获取List集合类对象的值</h1>
    ${list.add("ccc")}<br/>
    ${list}<br/>
    ${list[0]}<br/>
    ${list[1]}<br/>
    ${list[2].name}<br/>
<h1>获取Map集合类对象的值</h1>
    ${map.sname}<br/>
    ${map}<br/>
    ${map.gendar}<br/>
    ${map["gendar"]}<br/>
    ${map.user}<br/>
    ${map.user.name}
</body>
</html>

(3)隐式对象(内置对象)的使用。

//在jsp页面使用有效,html页面没用
<form action="${pageContext.request.contextPath}"></form>

三、JSTL(jsp标准标签库)。

e3a8e576852846e6a9af7f7afee9ee63.png

(1)标签-if。

<c:if test="true">
    <h1>我是真的</h1>
    </c:if>
    <%
        //判断request域中的一个list集合是否为空,如果不为null则显示遍历集合
        List list = new ArrayList();
        list.add("爱你");
        request.setAttribute("list",list);
    %>
    <c:if test="${not empty list}">我爱你哦</c:if>

(2)标签-choose。

<%
        //完成数字编号对用的星期几案例
        //1.域中存储数字
        request.setAttribute("number",3);
        //2.使用choose标签取出数字           想当于switch声明
        //3.使用when标签做数字判断           相当于case
        //4.otherwise标签做其他情况的声明     相当于default
    %>
    <c:choose>
        <c:when test="${number == 1}">星期一</c:when>
        <c:when test="${number == 2}">星期二</c:when>
        <c:when test="${number == 3}">星期三</c:when>
        <c:when test="${number == 4}">星期四</c:when>
        <c:when test="${number == 5}">星期五</c:when>
        <c:when test="${number == 6}">星期六</c:when>
        <c:when test="${number == 7}">星期日</c:when>
        <c
    </c:choose>

(3)标签-forEach。

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>jstl3</title>
</head>
<body>
    <c:forEach begin="3" end="10" var="i" step="1" varStatus="s">
        ${i} ${s.index} ${s.count}<br/>
    </c:forEach>

    <%
        List list = new ArrayList();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        request.setAttribute("list",list);
    %>
    <c:forEach begin="0" end="${list.size()-1}" var="s" step="1" items="${list}">
        ${s}<br/>
    </c:forEach>
    <c:forEach items="${list}" var="str" varStatus="s">
        ${s.index} ${s.count}${str}<br/>
    </c:forEach>
</body>
</html>

四、JSP+EL+JSTL——结合案例。

<%@ page import="EL_获取域中存储的值_对象值.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>jstl练习</title>
</head>
<body>
    <%
        List list = new ArrayList();
        list.add(new User("张三",23,new Date()));
        list.add(new User("李四",24,new Date()));
        list.add(new User("王五",25,new Date()));
        request.setAttribute("list",list);
    %>
    <table border="1" width="500" align="center">
        <tr>
            <th>编号</th>
            <th>名字</th>
            <th>年龄</th>
            <th>生日</th>
        </tr>
        <c:forEach items="${requestScope.list}" var="user" varStatus="s">
            <c:if test="${s.count % 2 == 0}">
                <tr bgcolor="green">
                    <td>${s.count}</td>
                    <td>${user.name}</td>
                    <td>${user.age}</td>
                    <td>${user.birStr}</td>
                </tr>
            </c:if>
            <c:if test="${s.count % 2 == 1}">
                <tr>
                    <td>${s.count}</td>
                    <td>${user.name}</td>
                    <td>${user.age}</td>
                    <td>${user.birStr}</td>
                </tr>
            </c:if>
        </c:forEach>
    </table>
</body>
</html>

 五、MVC开发模式。

9f2ec3845340449990d6d79714410c44.png

8f00ac20cb3c4e20a85e3bea523e083c.png

 六、三层架构。

72353bc746384b4aa0fb425b4cb04caf.png

efb6ab8a274d4507b1b7aa2d9e0275a9.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值