【Java&Shiro】JSP语法记录,扫除Java的MVC开发盲点

JSP

JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。

JSP文件后缀名为 *.jsp

JSTL

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

根据JSTL标签所提供的功能,可以将其分为5个类别:

  • 核心标签
  • 格式化标签
  • SQL 标签
  • XML 标签
  • JSTL 函数

核心标签

<c:out> 标签

<c:out>标签用来显示一个表达式的结果

属性描述是否必要默认值
value要输出的内容
default输出的默认值主体中的内容
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:out value="${salary}"/>

 <c:set> 标签

<c:set>标签用于设置变量值和对象属性

属性描述是否必要默认值
value要存储的值主体的内容
var存储信息的变量
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:out value="${salary}"/>

 <c:if> 标签

<c:if>标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。

属性描述是否必要默认值
test条件
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary > 2000}">
   <p>我的工资为: <c:out value="${salary}"/><p>
</c:if>

<c:choose>标签

<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。

switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>

  • <c:choose>标签没有属性。
  • <c:when>标签只有一个属性,在下表中有给出。
  • <c:otherwise>标签没有属性。
属性描述是否必要默认值
test条件
<c:set var="salary" scope="session" value="${2000*2}"/>
<p>你的工资为 : <c:out value="${salary}"/></p>
<c:choose>
    <c:when test="${salary <= 0}">
       太惨了。
    </c:when>
    <c:when test="${salary > 1000}">
       不错的薪水,还能生活。
    </c:when>
    <c:otherwise>
        什么都没有。
    </c:otherwise>
</c:choose>

<c:forEach>

<c:forEach>标签迭代一个集合中的对象

属性描述是否必要默认值
items要被循环的信息
begin开始的元素(0=第一个元素,1=第二个元素)0
end最后一个元素(0=第一个元素,1=第二个元素)Last element
step每一次迭代的步长1
var代表当前条目的变量名称
varStatus代表循环状态的变量名称
<c:forEach  items="${sessionScope.userList}"  var="userItem"  varStatus="userStatus"> ${userItem.键名} </c:forEach>

实例解读: 对 session 对象存储的 userList 集合对象进行遍历,每次访问的项暂时存储在 userItem 变量中,从索引 1 开始至索引 10 进行访问,每次访问项的状态相关值由 userStatus 对象暂存

格式化标签

<fmt:formatNumber>标签

<fmt:formatNumber>标签用于格式化数字,百分比,货币

属性描述是否必要默认值
value要显示的数字
pattern指定一个自定义的格式化模式用与输出
groupingUsed是否对数字分组 (TRUE 或 FALSE)true
maxFractionDigits小数点后最大的位数
minFractionDigits小数点后最小的位数

pattern属性。这个属性可以让您在对数字编码时包含指定的字符:

符号描述
0代表一位数字
#代表一位数字,若没有则显示 0,前导 0 和追尾 0 不显示。
.小数点
<fmt:formatNumber value="${salary.totalShifts}" pattern="###,##0.00"/>

<fmt:formatNumber groupingUsed="false" value="${kqWorker.salary}" maxFractionDigits="7" minFractionDigits="0"/>

<fmt:formatDate> 标签

<fmt:formatDate>标签用于使用不同的方式格式化日期

属性描述是否必要默认值
value要显示的日期
pattern自定义格式模式

<fmt:formatDate> 标签格式模式:

代码描述实例

y

不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。

2002

M

月份数字。一位数的月份没有前导零。

April & 04

d

月中的某一天。一位数的日期没有前导零。

20

h

12 小时制的小时。一位数的小时数没有前导零。

12

H

24 小时制的小时。一位数的小时数没有前导零。

0

m

分钟。一位数的分钟数没有前导零。

45

s

秒。一位数的秒数没有前导零。

52

<fmt:formatDate value="${kqWorker.kqWorkerFile.contractExpire}" pattern="yyyy-MM-dd"/>

<fmt:formatDate value="${kqWorker.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>

<fmt:message> 标签 

<fmt:message>标签映射一个关键字给局部消息,然后执行参数替换

属性描述是否必要默认值
key要检索的消息关键字Body
<fmt:message key='project.attendanceManagement.DkList.pleaseSelect' /> 

使用<fmt:message>标签可以方便地实现国际化,可以根据用户的语言环境动态显示不同的文本消息,提供更好的多语言支持。在这个例子中,<fmt:message key='project.attendanceManagement.DkList.pleaseSelect' />可能会显示一个用于选择提示的文本消息,具体的内容需要查看资源文件中该键对应的值。

JSP 表达式语言:EL表达式

/ or div
% or mod取模
== or eq测试是否相等
!= or ne测试是否不等
< or lt测试是否小于
> or gt测试是否大于
<= or le测试是否小于等于
>= or ge测试是否大于等于
&& or and测试逻辑与
|| or or测试逻辑或
! or not测试取反
empty测试是否空值

表单标签库

表单标签库中包含了可以用在jsp页面渲染HTML元素的标签

<form:form>

属性描述
modelAttribute暴露表单支持对象的模型属性名称,默认是command
<form:form modelAttribute="book" action="save-book" method="post">
    ...
</form:form>

input标签

<form:input path="xxx"/>

path属性将文本框输入值绑定到form object上。

password标签

<form:password path="xxx"/>

hidden标签

<form:hidden path="xxx"/>

表示隐藏的元素,故不支持cssClass和cssStyle属性。

textarea标签

<form:textarea path="xxx"/>

示例一、 

<form:form action="addSto" method="post" modelAttribute="storageInformation">
    <form:input path="teacherId" name="teacherId" value="教师编号" />
    <form:input path="subjectId" name="subjectId" value="科目编号 " />
    <form:input path="storageName" name="storageName" value="名称" />
    <form:radiobutton path="category" name="category" value="0" />科目共享
    <form:radiobutton path="category" name="category" value="1" />个人独有
    <br>
    <div class="forgot">
        <input type="submit" value="创建">
    </div>
</form:form>

示例二、

创建实体类 user

package net.biancheng.po;
public class User {
    private String name;
    private Integer age;
    private Double height;
    
    /** 省略setter和getter方法*/
}

创建 addUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加用户</title>
</head>
<body>
    <fm:form method="post" modelAttribute="user" action="${pageContext.request.contextPath }/showuser">
        用户名:<fm:input path="name"/>
        <br />
        年龄:<fm:input path="age"/>
        <br />
        身高:<fm:input path="height"/>
        <br />
        <input type="submit" value="保存" />
    </fm:form>
</body>
</html>

其他

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

该指令用于设置 JSP 页面输出的内容类型和编码格式。其中 contentType 属性表示输出内容类型,本例中设置为 "text/html",表示输出的是 HTML 类型的文档;charset 属性表示字符集编码,本例中设置为 UTF-8,表示采用 UTF-8 编码格式输出页面。

<%@ include file="/WEB-INF/views/include/taglib.jsp"%>

该指令用于在 JSP 页面中引入一个静态文件。其中 file 属性表示要引入的文件路径,本例中引入了位于应用程序 Web 根目录下 /WEB-INF/views/include 目录下名为 taglib.jsp 的文件。

Shiro

Apache Shiro 是一个强大易用的 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。

<shiro:hasPermission name=“...“>

<shiro:hasPermission name="sys:user:edit">

haspermission是从外部引入的一个标签,执行标签时,标签会根据name属性来判断当前用户是否拥有指定的权限。如果有,就执行shiro标签内的代码,如果没有,就跳过不执行。

更多有关可看:

<shiro:hasPermission name=“...“>咋用啊_好人不心的博客-CSDN博客

Shiro 关于_w3cschool

欢迎留言区补充

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来自湖南的阿晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值