我有一个用 Struts (MVC) 制作的 Java 项目,我需要将响应作为原始字符串发送
struts.xml
:
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.ui.theme" value="simple"></constant>
<constant name="struts.xwork.chaining.copyErrors" value="true"></constant>
<constant name="struts.xwork.chainingcopyMessages" value="true"></constant>
<package name="basicstruts6" extends="struts-default" namespace="/">
<default-action-ref name="init"></default-action-ref>
<action name="init" class="some.class.path.mvc.ServiceTestAction" method="init">
<result name="success">/WEB-INF/app/index.jsp</result>
</action>
<action name="invokeService" class="some.class.path.mvc.ServiceTestAction" method="execute">
<result name="success">/WEB-INF/app/index.jsp</result>
</action>
</package>
</struts>
在
<action name="invokeService" class="some.class.path.mvc.ServiceTestAction" method="execute">
中,我想用我定义的原始字符串进行响应,而不使用 index.jsp
文件作为模型。
我仍然想要
some.class.path.mvc.ServiceTestAction
处理请求,但想直接写入响应编写器
同时我想设置响应的HTTP代码。如果出现错误,我想使用 HTTP 400 进行响应并将正文直接写入响应编写器。
如果您不想返回index.jsp作为结果,那么您应该在struts.xml中删除此代码
<result name="success">/WEB-INF/app/index.jsp</result>
</
在操作类
execute()
方法中 return SUCCESS
放置 return NONE
。
如果您的操作类实现了
HttpServletRequest
和 HttpServletResponse
,您可以获得 ServletRequestAware
和 ServletResponseAware
。
您还可以阅读这个答案:How to get the request body and response body in apache struts2? - 使用 $.ajax.
发布在操作
execute()
方法中,您使用 servlet API 向响应写入一些文本。类似的东西
PrintWriter writer = httpServletResponse.getWriter();
writer.println("hello server");
writer.flush();
httpServletResponse.setStatus(400);