我的场景是当我转到localhost:8081/search
时,必须加载一个简单的HTML文件,该文件具有文本字段(输入)和提交按钮。
我在文本字段中编写一个主题,然后单击"提交"按钮,必须将主题传输到我的数据库中以应用一些SQL查询,然后查询结果必须返回为.txt
或.html
文件。
但是当我查看文本文件时,我只是看到非常不寻常的字符。
这是mule中的XML流量代码
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
<db:mysql-config name="MySQL_Configuration" host="localhost" port="3306" user="root" password="Blue1234" database="news" doc:name="MySQL Configuration"/>
<http:request-config name="HTTP_Request_Configuration" host="localhost" doc:name="HTTP Request Configuration" port="8081"/>
<file:connector name="file" writeToDirectory="C:UsersHershDesktopfile" autoDelete="true" streaming="true" validateConnections="true" doc:name="File" />
<flow name="parsetemplateFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/web" doc:name="HTTP"/>
<set-payload value="#[message.inboundProperties.'http.query.params'.q]" doc:name="Set Payload" mimeType="text/html"/>
<db:select config-ref="MySQL_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[select txt from news.nws where sub=#[message.payload]]]></db:parameterized-query>
</db:select>
<response>
<http:static-resource-handler resourceBase="C:UsersHershDesktopattach" defaultFile="index.html" doc:name="HTTP Static Resource Handler"/>
</response>
<logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
<set-payload value="#[message.payload]" doc:name="Set Payload"/>
<response>
<file:outbound-endpoint path="C:UsersHershDesktopfile" outputPattern="output.txt" connector-ref="file" responseTimeout="10000" doc:name="File"/>
</response>
</flow>
</mule>
这是流量的屏幕截图
在此处输入图像描述
理想情况下,流的结构应该是这样的,
- 您使用Parse模板/HTTP静态资源处理程序通过HTML输入输入
- 在DB中使用这些值
- 使用文件组件组件将数据库的响应写入文件。
如果这不是您的案例评论您需要的内容。
样本配置xml-
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
<db:mysql-config name="MySQL_Configuration" host="localhost" port="3306" user="root" password="Blue1234" database="news" doc:name="MySQL Configuration"/>
<http:request-config name="HTTP_Request_Configuration" host="localhost" doc:name="HTTP Request Configuration" port="8081"/>
<file:connector name="file" writeToDirectory="C:UsersHershDesktopfile" autoDelete="true" streaming="true" validateConnections="true" doc:name="File" />
<flow name="parsetemplateFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/web" doc:name="HTTP"/>
<http:static-resource-handler resourceBase="C:UsersHershDesktopattach" defaultFile="index.html" doc:name="HTTP Static Resource Handler"/>
<set-payload value="#[message.inboundProperties.'http.query.params'.q]" mimeType="text/html" doc:name="Set Payload"/>
<db:select config-ref="MySQL_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[select txt from news.nws where sub=#[message.payload]]]></db:parameterized-query>
</db:select>
<logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
<set-payload value="#[message.payload]" doc:name="Set Payload"/>
<file:outbound-endpoint path="C:UsersHershDesktopfile" outputPattern="output.txt" connector-ref="file" responseTimeout="10000" doc:name="File"/>
</flow>
数据库连接器以java.util.LinkedList
(Java Collection Format)的形式返回数据,这就是您获得不寻常字符的原因。要获得纯文本,您首先必须将数据从Java对象转换为纯文本。您可以使用转换消息进行转换。