一、列表显示包含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 );
//这样就可以对该字符串进行处理了,和用户输入的一致
%>