JSP前后端用户输入内容包含html或JS代码的处理

本文探讨了在JSP中如何处理前后端交互时遇到的用户输入包含HTML或JS代码的问题。一方面,当列表数据显示这类内容时,后端(method.jsp)需正确处理并传递给前端(xx.jsp);另一方面,若用户输入含有此类代码,服务器端(如request.getParameter在myfunction.js中处理ajax请求时)可能会报错,需要采取适当措施避免错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、列表显示包含Html代码或者JS代码

前端通过服务器获取列表数据,直接显示的情况:
后端代码:

method.jsp

<%@ page import="org.springframework.web.util.HtmlUtils" %>
<%!
public String getForm(){
    String form= "<script>alert('123');</script>";
    //把html的特殊字符转换成实体字符,如空格转换为&#160;
    //如果不加下面这句,在填充表单的时候,会将上面的字符串当做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, "&amp;");  //放前面,防止后面替换来的&再次被替换
    str = str.replace(/ /g, "&#160;");
    str = str.replace(/</g, "&#60;");
    str = str.replace(/>/g, "&#62;");
    str = str.replace(/"/g, "&#34;");
    str = str.replace(/'/g, "&#39;");

    return str;
}

//实体字符转换为原字符,在页面引用时,如赋值给某个input的value时,先转换回元字符
function deReplaceAllS(str){


    str = str.replace(/&#60;/g, "<");
    str = str.replace(/&#62;/g, ">");
    str = str.replace(/&#160;/g, " ");
    str = str.replace(/&#34;/g, "\"");
    str = str.replace(/&#39;/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的实体字符转换成特殊字符,如&#160转换为空格;

    inputStr  =  HtmlUtils.htmlUnescape(inputStr );
//这样就可以对该字符串进行处理了,和用户输入的一致
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值