XML中的url链接写法

<ud_msg><nmctrl_msg type="0" join_url="http://127.0.0.1/control.html?conid=8973&token=#TOKEN" /></ud_msg>

JDOM解析XML中报错:

Caused by: org.xml.sax.SAXParseException: The reference to entity "token" must end with the ';' delimiter.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1411)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:868)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(XMLNSDocumentScannerImpl.java:460)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:277)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)

正确的写法是:

<ud_msg><nmctrl_msg type="0" join_url="http://127.0.0.1/control.html?conid=8973&amp;token=#TOKEN" /></ud_msg>

在xml文件中有以下几类字符要进行转义替换:

&lt;

小于号

&gt;

大于号

&amp;

&

&apos;

'

单引号

&quot;

"

双引号

转载于:https://www.cnblogs.com/java4vanna/p/4267716.html

### 实现 `SecurityFilterChain` 的新写法 在 Spring Security 5 及以上版本中,`SecurityFilterChain` 提供了一种更加简洁和灵活的方式来定义安全配置。通过使用 Java 配置类而不是 XML 文件,可以更方便地管理安全性设置。 #### 创建自定义的安全配置类 为了创建一个新的 `SecurityFilterChain`,需要编一个实现了 `WebSecurityConfigurerAdapter` 接口的配置类(虽然官方建议直接继承此接口的方式已过时,在最新版应采用如下方式),并重中的方法来自定义 HTTP 请求的安全策略: ```java @Configuration public class WebSecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeRequests(authorize -> authorize .antMatchers("/login", "/css/**").permitAll() // 允许访问登录页面和其他静态资源 .anyRequest().authenticated()) // 所有其他请求都需要身份验证 .formLogin(form -> form .loginPage("/login") // 自定义登录页URL .defaultSuccessUrl("/", true)) // 登录成功后的默认跳转地址 .logout(logout -> logout .logoutUrl("/perform_logout")) // 设置登出路由 .exceptionHandling(exception -> exception .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login"))); // 认证入口点指向登录页面 return http.build(); } } ``` 这段代码展示了如何构建一个简单的 `SecurityFilterChain` 来保护应用的不同部分[^3]。这里设置了哪些 URL 路径不需要认证即可访问 (`/login`, `/css/*`) ,以及所有其他的请求都必须经过身份验证才能访问。还指定了表单登录的相关参数,包括登录页面的位置、成功的回调链接等,并且为未授权用户提供了一个合适的错误提示页面。 对于特定场景下的需求,如短信验证码登录或图形验证码等功能扩展,可以在上述基础上进一步调整和完善配置逻辑,例如引入额外的服务来进行二次校验操作[^1]。 另外值得注意的是,在实际项目开发过程中通常还会涉及到密码编码器的选择与集成工作。推荐使用 `BCryptPasswordEncoder` 进行用户密码存储前的加密处理,因为它提供了足够的安全性并且易于维护[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值