我正在研究一个使用JSP的项目。我正在尝试使用c:out标记来防止xss。在我的一个JSP页面上,c:out标记不适用于任何变量,并且我不确定这是怎么回事。 c:out似乎在其他页面上工作,所以我有点迷路。
这是到目前为止的代码:
<%@ page language="java"
import="java.sql.*,java.util.*,com.project.admin.*"
errorPage="Error.jsp"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<%
String HELP_PAGE = null;
AdminControlModel adminModel = new AdminControlModel();
User userObj = null;
ArrayList systemUsers = adminModel.selectUsers();
%>
</head>
<body>
<div class="container">
<div class="row">
<div class="col">
<div class="card">
<div class="card-body">
<form>
<div class="table-responsive">
<table class="table" style="font-size: 13px !important;">
<thead class="thead-dark">
<tr>
<th scope="col">User ID</th>
<th scope="col">Account ID</th>
<th scope="col">User Type</th>
<th scope="col">User Name</th>
<th scope="col">Effective From</th>
<th scope="col">Expires On</th>
<th scope="col">Added On</th>
</tr>
</thead>
<%!
Integer userID = 12345;
String user = null;
String userRole = null;
String userName = null;
java.sql.Date userEffDate = null;
java.sql.Date userExpDate = null;
java.sql.Date userAddDate = null;
java.sql.Date userUpdationDate = null;
String userAddUser = null;
String userUpdateUser = null;
%>
<%
for(int i = 0 ; i < systemUsers.size() ; i++) {
userObj = (User) systemUsers.get(i);
userID = userObj.getUserID();
user = userObj.getUser().toString();
userRole = userObj.getUserRole();
userName = userObj.getUserName();
userEffDate = userObj.getUserEffDate();
userExpDate = userObj.getUserExpDate();
userAddDate = userObj.getUserAddDate();
userUpdationDate = userObj.getUserUpdationDate();
userAddUser = userObj.getUserAddUser();
userUpdateUser = userObj.getUserUpdateUser();
if(userUpdateUser == null) {
userUpdateUser = " ";
}
out.println("<tr>");
%>
<td>
<c:out value="${userID}" />
</td>
<td>
<c:out value="${user}" />
</td>
<td>
<%= userRole %>
</td>
<td>
<%= userName %>
</td>
<td nowrap>
<%= userEffDate %>
</td>
<td nowrap>
<%= userExpDate %>
</td>
<td nowrap>
<%= userAddDate %>
</td>
<%
out.println("</tr>");
}
%>
</table>
<br>
</div> <!-- Table responcive End -->
</form>
</div><!-- card-body End -->
</div><!-- card End -->
</div><!-- col End -->
</div> <!-- Row End -->
</div> <!-- Container End -->
</body>
c:out中的变量未显示,对于那些特定的表值仅显示为空白。
我想要的结果是变量显示在标签内部。
因此它应该类似于:
<td>The Custom variables inside of c:out</td>
但是我什么也没得到:
<td></td>
变量的<%=%>标记正在工作,但是我想将它们转换为c:out标记以防止xss。如果有人对为什么会发生有任何想法,请告诉我谢谢