cxf3.1.7 + wss4j开发应用

       最近项目需要用到webService的调用,之前也没研究过相关的配置,就网上找了下资料,采用maven+spring + cxf+wss4j配置测试webservice用。

首先创建的项目配置cxf的pom.xml的相关包的引入,代码如下:


   
   

		
   
   
			
    
    
     
     org.apache.cxf
    
    
			
    
    
     
     cxf-rt-frontend-jaxws
    
    
			
    
    
     
     3.1.7
    
    
		
   
   
		
   
   
			
    
    
     
     org.apache.cxf
    
    
			
    
    
     
     cxf-rt-transports-http
    
    
			
    
    
     
     3.1.7
    
    
		
   
   
		
		
   
   
		
   
   
			
    
    
     
     org.apache.cxf
    
    
			
    
    
     
     cxf-rt-ws-security
    
    
			
    
    
     
     3.1.7
    
    
		
   
   
接着就是服务器和客户端的开发

参考:

http://blog.csdn.net/jquerys/article/details/50634576

http://blog.csdn.net/rangqiwei/article/details/19282271

加入权限验证时,开发的服务端回调类注意的地方



调试遇到的问题:

WSPasswordCallback 的passwordType属性和password 属性都为null,你只能获得用户名(identifier),一般这里的逻辑是使用这个用户名到数据库中查询其密码,然后再设置到password 属性,WSS4J 会自动比较客户端传来的值和你设置的这个值。
你可能会问为什么这里CXF 不把客户端提交的密码传入让我们在ServerPasswordCallbackHandler 中比较呢?
这是因为客户端提交过来的密码在SOAP 消息中已经被加密为MD5 的字符串,如果我们要在回调方法中作比较,
那么第一步要做的就是把服务端准备好的密码加密为MD5 字符串,由于MD5 算法参数不同结果也会有差别,另外,这样的工作CXF 替我们完成不是更简单?


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个基于SpringMVC、CXF、WebService和JSP的登录功能的示例代码,供你参考: 1. 创建User模型类 ```java public class User { private String username; private String password; // 省略getter、setter方法 } ``` 2. 创建UserDAO接口和UserDAOImpl实现类 ```java public interface UserDAO { User findUserByUsernameAndPassword(String username, String password); } ``` ```java @Repository public class UserDAOImpl implements UserDAO { @Autowired private SqlSessionTemplate sqlSessionTemplate; @Override public User findUserByUsernameAndPassword(String username, String password) { Map<String, String> params = new HashMap<>(); params.put("username", username); params.put("password", password); return sqlSessionTemplate.selectOne("UserMapper.findUserByUsernameAndPassword", params); } } ``` 3. 创建UserService接口和UserServiceImpl实现类 ```java public interface UserService { User login(String username, String password); } ``` ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserDAO userDAO; @Override public User login(String username, String password) { return userDAO.findUserByUsernameAndPassword(username, password); } } ``` 4. 创建LoginController ```java @Controller public class LoginController { @Autowired private UserService userService; @RequestMapping(value = "/login", method = RequestMethod.POST) public String login(HttpServletRequest request, String username, String password) { User user = userService.login(username, password); if (user != null) { request.getSession().setAttribute("user", user); return "redirect:/index"; } else { request.setAttribute("message", "用户名或密码错误"); return "login"; } } } ``` 5. 创建UserWebService接口和UserWebServiceImpl实现类 ```java @WebService public interface UserWebService { User login(String username, String password); } ``` ```java @Service @WebService(endpointInterface = "com.example.UserWebService") public class UserWebServiceImpl implements UserWebService { @Autowired private UserService userService; @Override public User login(String username, String password) { return userService.login(username, password); } } ``` 6. 创建CXF配置文件 在applicationContext.xml中添加以下配置: ```xml <jaxws:endpoint id="userWebService" implementor="#userWebServiceImpl" address="/user" /> <bean id="userWebServiceImpl" class="com.example.UserWebServiceImpl" /> ``` 7. 创建JSP页面 ```html <form action="${pageContext.request.contextPath}/login" method="post"> <label>用户名:</label> <input type="text" name="username"><br> <label>密码:</label> <input type="password" name="password"><br> <input type="submit" value="登录"> </form> ``` 以上是一个简单的示例,仅供参考。具体实现还需要根据你的具体需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值