<html encode>html空格传到java后台变成了问号?

本文详细介绍了在使用KendoUI的textarea时,前台输入的空格多于一个存入后台后空格个数不对的问题。通过深入分析和排查,最终发现并解决了编码问题,确保了前后台数据的一致性。

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

[b]1.问题描述[/b]
使用kendo ui的textarea,前台输入的空格多于一个的时候存入后台后空格的个数不对,有的变成了问号?

[b]2.问题分析[/b]
debug前端js和java后台发现分明都是正常的空格显示,但是输出到日志和存入数据库的都不对,有问号。看来是编码的问题,查资料发现:[url]http://blog.youkuaiyun.com/wuhongyao3/article/details/5834921[/url],看来确实是编码问题,而且非常隐蔽。debug前端js,把textarea的值拷贝到ue里以2进制查看,确实是出现了0x3f.

[b]3.解决[/b]
上面引用的url的解决办法是c#版的,java后台可以:
byte[] space = new byte[]{(byte)0xc2,(byte)0xa0};
String UTFSpace = null;

try
{
UTFSpace = new String(space,"utf-8");
}
catch (Exception e)
{
log.error("", e);
}

// 这里的smsContent就是前端传过来的包含乱码的值。
smsContent = smsContent.replace(UTFSpace," ");
<think>好的,我现在需要帮助用户在Spring Boot中创建一个WebService接口,接收和解析特定的XML结构数据,并通过Postman测试。首先,我得回顾一下用户提供的引用内容,看看里面有哪些有用的信息。 用户提到引用了三个关于Spring Boot、CXF和Postman测试的资料。引用[1]和[2]都提到了添加依赖,特别是spring-boot-starter-web-services和cxf-spring-boot-starter-jaxws。引用[3]则涉及Postman测试时发送的SOAP XML请求结构。所以,我需要确保在项目中正确配置这些依赖,并设置WebService端点。 首先,项目的依赖配置。根据引用[1]和[2],用户需要添加Spring Boot的WebServices starter和CXF的依赖。可能需要检查CXF的版本,引用[2]中用的是3.2.7,所以需要确认当前是否可用或者是否需要更新。 接下来是创建WebService接口。通常,使用JAX-WS注解来定义服务端点和操作。例如,@WebService注解标记类,@WebMethod注解方法。然后,需要配置CXF的Servlet,以便发布服务。引用[2]提到了启动类的配置,可能需要在Spring Boot启动类中添加@EnableWebService,或者通过配置类注册端点。 然后是关于处理特定的XML结构。用户希望接口接收特定的XML数据,这意味着需要定义对应的请求和响应对象,这些对象需要使用JAXB注解进行XML绑定。例如,@XmlRootElement、@XmlElement等注解,确保Java对象和XML之间的正确转换。 在服务实现中,需要解析传入的XML到Java对象,处理业务逻辑,然后返回响应对象,由CXF自动转换为XML响应。这里需要注意命名空间的处理,可能与引用[3]中的示例类似,需要确保XML的命名空间与JAXB生成的匹配。 Postman测试部分,引用[3]展示了如何发送SOAP请求:设置POST请求,Content-Type为text/xml,Body中使用raw XML格式,并按照SOAP Envelope的结构构造请求。用户需要根据自己定义的WSDL结构来调整XML内容,可能涉及到操作名称、命名空间等。 可能还需要考虑WSDL的生成和访问。CXF通常会自动生成WSDL,通过访问服务的URL加上?wsdl参数。用户可能需要查看WSDL来确认请求的结构是否正确。 另外,配置CXF的Servlet路径,比如在application.properties中设置cxf.path,确保服务端点正确暴露。然后,在Postman中发送请求到正确的URL,例如http://localhost:8080/ws/api,并附上正确的SOAP XML。 需要验证各个步骤是否正确:依赖是否添加、端点配置是否正确、JAXB注解是否正确使用、Postman请求的格式是否正确。如果有错误,可能需要查看日志,检查是否缺少依赖或配置错误。 最后,生成相关问题,可能涉及性能优化、异常处理、安全配置等,帮助用户进一步了解WebService的开发。</think>以下是Spring Boot创建WebService接口并接收XML数据的完整实现步骤: ### 一、依赖配置(POM.XML) 必须添加CXF和WebService核心依赖: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-spring-boot-starter-jaxws</artifactId> <version>3.5.5</version> </dependency> </dependencies> ``` > 注意:建议使用CXF 3.5.x版本保证兼容性[^2] ### 二、定义数据模型 创建接收XML结构的Java对象: ```java @XmlRootElement(namespace = "http://example.com/demo") @XmlAccessorType(XmlAccessType.FIELD) public class UserRequest { @XmlElement(namespace = "http://example.com/demo") private String username; @XmlElement(namespace = "http://example.com/demo") private Integer userid; // getters/setters } ``` ### 三、创建服务端点 ```java @WebService(targetNamespace = "http://example.com/demo") public class UserServiceEndpoint { @WebMethod public String processUser(@WebParam(name = "userRequest") UserRequest request) { return "Received: " + request.getUsername() + " (ID:" + request.getUserid() + ")"; } } ``` ### 四、配置CXF端点(关键配置) ```java @Configuration public class WebServiceConfig { @Autowired private Bus bus; @Bean public Endpoint endpoint() { EndpointImpl endpoint = new EndpointImpl(bus, new UserServiceEndpoint()); endpoint.publish("/userService"); return endpoint; } } ``` 配置服务访问路径: ```properties cxf.path=/ws ``` ### 五、Postman测试步骤 1. **请求地址**:`POST http://localhost:8080/ws/userService` 2. **Headers**: - `Content-Type: text/xml` - `SOAPAction: ""` 3. **Body**(选择raw/XML): ```xml <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:demo="http://example.com/demo"> <soapenv:Header/> <soapenv:Body> <demo:userRequest> <demo:username>测试用户</demo:username> <demo:userid>1001</demo:userid> </demo:userRequest> </soapenv:Body> </soapenv:Envelope> ``` ### 六、验证结果 成功响应示例: ```xml <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:processUserResponse xmlns:ns2="http://example.com/demo"> <return>Received: 测试用户 (ID:1001)</return> </ns2:processUserResponse> </soap:Body> </soap:Envelope> ``` ### 注意事项 1. 命名空间必须与注解定义一致 2. 使用`@XmlElement`明确字段映射关系 3. CXF 3.5.x版本默认支持Spring Boot 2.x[^2] 4. WSDL可通过`http://localhost:8080/ws/userService?wsdl`获取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值