java - 输出编码(在jsp中显示编码后的字符)

标签 java jsp spring-mvc

在我的jsp表单中,当我输入这些特殊字符时, !"#$%&*+/:;=?@[]^{|}~\

它在屏幕上显示的内容与上面相同,但不是 "和 & ,而是将 html 实体显示为 "& 这对这两个有好处字符。但我想显示所有其他特殊字符,如下所示

!"#$%&*+ /

在屏幕后面,它对所有字符进行编码,但是当我在屏幕上显示时,只有两个字符被编码,所有其他字符都被再次解码并显示在屏幕上!

如何更改它以仅显示编码值而不解码?

对于每个请求,我使用 EscapeCharactersUtility 类转换表单字段值,例如

     while (character != CharacterIterator.DONE ){
       if (character == '<') {
         result.append("&lt;");
       }
       else if (character == '>') {
         result.append("&gt;");
       }
       else if (character == '&') {
         result.append("&amp;");
      }
       else if (character == '\"') {
         result.append("&quot;");
       }
       else if (character == '\t') {
         addCharEntity(9, result);
       }
       else if (character == '!') {
         addCharEntity(33, result);
       }
}

addCharEntity 用于追加&#;

我在下面的类中的 processFormFieldValue 方法中进行转换,

public class CSRFRequestDataValueProcessor implements RequestDataValueProcessor {


@Override
public String processAction(HttpServletRequest request, String action) {
    return action;
}

@Override
public String processFormFieldValue(HttpServletRequest request, String name, String value, String type) {
    value = EscapeCharactersUtility.forHTML(value);
    return value;
}

@Override
public Map<String, String> getExtraHiddenFields(HttpServletRequest request) {
    Map<String, String> hiddenFields = new HashMap<String, String>();
    hiddenFields.put(CSRFTokenManager.CSRF_TOKEN_NAME, CSRFTokenManager.getTokenForSession(request.getSession()));
    return hiddenFields;
}

@Override
public String processUrl(HttpServletRequest request, String url) {
    return url;
}

}

最佳答案

当您对字符进行编码时,浏览器将对其进行解码并在屏幕上显示该字符。这很正常。如果你想在浏览器中直接显示代码而不是字符,你需要这样做

&lt; becomes &amp;lt;
&quot; becomes &amp;quot;

结果将是在屏幕上看到的不是小于号和引号

&lt;
&quot;

所以

   if (character == '<') {
     result.append("&amp;lt;");
   }
  else if (character == '&') {
     result.append("&amp;amp;");
  }

关于java - 输出编码(在jsp中显示编码后的字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478782/

相关文章:

java - 从 Spring MVC 流式传输动态文件

java - Spring - MultipartFileUpload 与容器和自定义 validator 的集成测试

java - java中链表代码出现意外结果

java - 使用 Mockito 和 jUnit 为具有两个 HTTP 调用的方法编写单元测试

java - 将嵌套的 json 数据解析为字符串

java - 如何使用 JSTL 确定空 session 属性

java - 如何将逻辑排除在 JSP 之外?

java - 如何检查html文本框中的空值?

Java Swing : Listening and repeating events from one frame in another

java - @OneToMany/@ManyToOne 如何使用表单保存数据