1. 程式人生 > >JSP、El表示式、JSTL表示式筆記

JSP、El表示式、JSTL表示式筆記

html改jsp替換標頭檔案

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<%

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></title>往上替換

定義完以上之後,<%= basePath %>/jsp/hello.jsp   相當於全路徑

 

El表示式

語法結構${expression}

 

JSTL(JSP標準標籤庫)

<% %> <%= %>

 

${pageContext.request.contextPath}等價於<%=request.getContextPath()%> 或者可以說是<%=request.getContextPath()%>的EL版 意思就是取出部署的應用程式名或者是當前的專案名稱

比如我的專案名稱是ajax01 在瀏覽器中輸入為

http://localhost:8080/ajax01/login.jsp

${pageContext.request.contextPath}或<%=request.getContextPath()%>取出來的就是/ajax01,而"/"代表的含義就是http://localhost:8080

所以我們專案中應該這樣寫${pageContext.request.contextPath}/login.jsp,這種方式還是一種相對路徑取法;<%= basePath %>/jsp/hello.jsp是絕對路徑取法。

清除input框快取歷史記錄

<input class="" type="text" autocomplete="off" />

 

遍歷(c:foreach)

<c:forEach items="${empList}" var="emp" varStatus="status">

<tr>

<td>${status.count}</td>

<td>${emp.EMPNO}</td>

<td>${emp.ENAME}</td>

<td>

<a href="#">修改</a>

<a href="#">刪除</a>

</td>

</tr>

</c:forEach>

其中varStatus可以給每行新增編號,其中${status.count}從1開始;${status.index}從0開始

 

a標籤的跳轉

<a href="javascript:void(0)"></a> 點選此a標籤不跳轉任何程式碼

<a href="emp/toUpdateEmp?${emp.EMPNO}">修改</a>

<a href="javascript:del(${emp.EMPNO})">刪除</a>

 

下拉選單的選擇和傳值

jsp頁面中

<select name="DEPTNO">

<option value="1">=請選擇=</option>

<c:forEach items="${deptList}" var="dept">

<option value="${dept.DEPTNO}">${dept.DNAME}</option>

</c:forEach>

</select>

controller層接收

@RequestMapping("addEmp")

public String addEmp(@RequestParam Map map){

int row=empService.addEmp(map);

if(row>0){

return "redirect:empList";

}

return "emp/errorEmp";

}

通過@RequestParam接收到引數map,用map.get("DEPTNO")獲取選擇值

 

date型別的傳遞

jsp頁面中、

<tr>

<td>僱傭日期</td>

<td><input type="date" name="HIREDATE"/></td>

</tr>

mapper檔案中,寫插入語句時候需要用 to_date 轉化為date型別才能存入資料庫

to_date(#{HIREDATE},'yyyy-mm-dd')

<fmt:formatDate>標籤格式化日期

在springmvc的demo中有用到

jsp頁面引入標籤

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>

在需要格式化時用以下方法取值

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

其中,item是實體,其中的itemDate是實體的欄位,型別為java.util.Date

 

給下拉選單賦初始值

jsp頁面中select引入id="deptNo"

JS寫法

<script type="text/javascript">

window.onload=function(){

//JS方式設定下拉框的初始值

var deptNo="${empMap.DEPTNO}";

//JS方法賦值

document.getElementById("deptNo").value=deptNo;

}

</script>

JQuery寫法(使用前需要先引入一個jQuery庫)

<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>

$(function(){

//JQuery方式設定下拉框的初始值

var deptNo="${empMap.DEPTNO}";

$("#deptNo").val(deptNo); jquery方法賦值

});

 

執行跳轉時先進行confirm彈框判斷的方法

跳轉

<a href="javascript:del(${emp.EMPNO})">刪除</a>

JS函式

function del(empNo){

var d=confirm("確認刪除此員工?");

if(d){

window.location.href="emp/deleteEmp?EMPNO="+empNo;

}

}

也可以寫JS如下

function del(empNo){

if(confirm("確認刪除此員工?")){

window.location.href="emp/deleteEmp?EMPNO="+empNo;

}

}

 

JOSN傳值

@RequestMapping(value="/api/subq/expressSub",method={ RequestMethod.POST )

@ResponseBody

public BaseResp expressSub(@RequestBody JSONObject body){

 

//先定義變數

String num = "";

String comCode = "";

 

// 判斷num引數是否合法,並取值

if (body.containsKey("num")) {

num = body.getString("num");

if ("".equals(StringUtils.deleteWhitespace(num))) {

return DataResp.fail("", "快遞單號不能為空");

}

} else {

return DataResp.fail("", "快遞單號為必填項");

}

 

// 判斷comCOde引數是否合法

if (body.containsKey("comCode")) {

comCode = body.getString("comCode");

if ("".equals(StringUtils.deleteWhitespace(comCode))) {

return DataResp.fail("", "快遞公司程式碼不能為空");

}

} else {

return DataResp.fail("", "快遞公司程式碼為必填項");

}

}

 

//下邊可以直接使用取到值的num和comCode

}

 

Ctrl返回值問題

返回值為void,可以直接return ;

public void save(){

……

return ;

}

 

表單必填項

必填選項紅色星標<span style=”color:red;”></span>