如何将字符串作为HTML代码从Java文件读取到JSP页面?
我正在创建一个简单的web应用程序(使用JSP),用户可以在其中添加、更新和删除员工记录。在添加新记录时,不允许用户输入姓氏和给定名称的空值。如果用户试图添加带有空值的记录,将显示一条错误消息。错误消息是从Java文件中的字符串生成的(操作)。但是,该字符串包含HTML标记。它们不是作为HTML代码读取的,而是作为HTML实体读取的如何将字符串作为HTML代码从Java文件读取到JSP页面?,java,html,jsp,Java,Html,Jsp,我正在创建一个简单的web应用程序(使用JSP),用户可以在其中添加、更新和删除员工记录。在添加新记录时,不允许用户输入姓氏和给定名称的空值。如果用户试图添加带有空值的记录,将显示一条错误消息。错误消息是从Java文件中的字符串生成的(操作)。但是,该字符串包含HTML标记。它们不是作为HTML代码读取的,而是作为HTML实体读取的 <ul class="errorMessage"> <li><span>Not valid. <b>
<ul class="errorMessage">
<li><span>Not valid. <b>First name</b></span>
</li>
</ul>
以下是my action Java文件中的方法,该方法生成错误消息:
final static String SUCCESS_MSG = "New record has been added successfully.";
final static String ERROR_MSG = "Not valid. ";
public String addEmployee() throws Exception
{
logger.info("addEmployee method called");
if (!this.employee.getLastname().isEmpty()
&& !this.employee.getFirstname().isEmpty())
{
this.employeeManager.addEmployee(this.employee);
addActionMessage(SUCCESS_MSG);
return SUCCESS;
}
else
{
addActionError(ERROR_MSG + (this.employee.getFirstname().isEmpty() ? "<b>First name</b>" :
this.employee.getLastname().isEmpty() ? "<b>Last name</b>" :
"<b>First</b> and <b>last names</b>") + " is null.");
return ERROR;
}
}
final static String SUCCESS\u MSG=“已成功添加新记录。”;
最终静态字符串错误\u MSG=“无效。”;
公共字符串addEmployee()引发异常
{
info(“调用addEmployee方法”);
如果(!this.employee.getLastname().isEmpty())
&&!this.employee.getFirstname().isEmpty())
{
this.employeeManager.addEmployee(this.employee);
addActionMessage(成功消息);
回归成功;
}
其他的
{
addActionError(错误消息+(this.employee.getFirstname().isEmpty()?“First name”:
this.employee.getLastname().isEmpty()?“姓氏”:
“名字和姓氏”)+“为空。”);
返回误差;
}
}
以下是我的JSP文件,其中将显示消息:
<s:if test="hasActionMessages()">
<div class="alert alert-success" role="alert">
<span class="glyphicon glyphicon-ok"></span>
<s:actionmessage />
</div>
</s:if>
<s:if test="hasActionErrors()">
<div class="alert alert-danger" role="alert">
<span class="glyphicon glyphicon-remove"></span>
<s:actionerror />
</div>
</s:if>
以下是输出:
我检查了HTML源代码。HTML标记中的小于和大于被转换为HTML实体
<ul class="errorMessage">
<li><span>Not valid. <b>First name</b></span>
</li>
</ul>
- 无效。b第一个名称/b
这实际上是理想的行为。插入的文本本质上是不可信的,因为它包含用户提供的标记/javascript,这将破坏您的布局,或者更糟糕的是,插入跨站点脚本和其他不受欢迎的行为
您不应该像那样将html嵌入到代码中。最好将消息存储在单独的属性文件中,并在运行时插入特定于大小写的值。例如,属性文件将具有:
invalid.name=Not valid. {0}
该名称将在运行时插入。OMG。太棒了!非常感谢。我还发现,您可以向JSP文件中的操作消息添加
escape=“false”
参数,例如
。我会谨慎使用escape属性。如果插入的值不受您的控制(用户/外部提供),则无法信任该值。例如,如果一个恶意用户输入了一个包含恶意javascript的名称,您的站点可能会受到危害。