一、列表顯示包含Html代碼或者JS代碼
前端通過服務器獲取列表數據,直接顯示的情況:
後端代碼:
method.jsp
<%@ page import="org.springframework.web.util.HtmlUtils" %>
<%!
public String getForm(){
String form= "<script>alert('123');</script>";
//把html的特殊字符轉換成實體字符,如空格轉換爲 
//如果不加下面這句,在填充表單的時候,會將上面的字符串當做js代碼執行
form= HtmlUtils.htmlEscapeDecimal(form);
return form;
}
%>
前端代碼:xx.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@include file="method.jsp" %>
<!--服務器代碼部分 -->
<%
String form=getForm();
%>
<!--js部分變量初始化-->
<script type="text/javascript">
var form= "<%=form%>";
$("#div1").html(form);
</script>
<html>
<div id='div1'></div>
</html>
二、用戶輸入中包含html代碼或者js代碼,服務器端接收報錯問題
當用戶提交的表單數據中包含html或者js代碼的時候,服務器端使用request.getParameter(“companyName”); 接收url中傳過來的參數時會報錯。
myfunction.js
//替換掉特殊字符
function replaceAllS(str){
//str = str.replace(/&/g, "&"); //放前面,防止後面替換來的&再次被替換
str = str.replace(/ /g, " ");
str = str.replace(/</g, "<");
str = str.replace(/>/g, ">");
str = str.replace(/"/g, """);
str = str.replace(/'/g, "'");
return str;
}
//實體字符轉換爲原字符,在頁面引用時,如賦值給某個input的value時,先轉換回元字符
function deReplaceAllS(str){
str = str.replace(/</g, "<");
str = str.replace(/>/g, ">");
str = str.replace(/ /g, " ");
str = str.replace(/"/g, "\"");
str = str.replace(/'/g, "'");
return str;
}
前端頁面的js,處理提交表單操作,提交事件調用
function submitForm () {
var inputStr = jQuery("#inputid").val();
inputStr = replaceAllS(inputStr );
jQuery.ajax({
url:"/XX/AjaxDealForm.jsp",
data: { 'inputStr ':inputStr },
dataType:'json',
success: function(data){
});
}
後端處理ajax提交數據的jsp頁面
<%@ page import="org.springframework.web.util.HtmlUtils" %>
<%
String inputStr = request.getParameter("inputStr");;
//把html的實體字符轉換成特殊字符,如 轉換爲空格;
inputStr = HtmlUtils.htmlUnescape(inputStr );
//這樣就可以對該字符串進行處理了,和用戶輸入的一致
%>