springmvc项目整合cxf框架开发webservice用jsp部署
时间: 2023-08-10 16:27:46 浏览: 191
首先,需要在Spring项目中引入CXF框架的依赖。在pom.xml文件中加入如下代码:
```xml
<!-- CXF框架 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle-jaxrs</artifactId>
<version>3.1.6</version>
</dependency>
```
接下来,需要在Spring的配置文件中配置CXF框架。在applicationContext.xml文件中加入如下代码:
```xml
<!-- 配置CXF框架 -->
<jaxrs:server id="restContainer" address="/">
<jaxrs:serviceBeans>
<ref bean="userService"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jsonProvider"/>
</jaxrs:providers>
</jaxrs:server>
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider"/>
<bean id="userService" class="com.example.service.UserServiceImpl"/>
```
其中,`userService`是实现了WebService接口的实现类,`jsonProvider`是用于处理JSON格式数据的提供者。
最后,在web.xml中配置CXF的Servlet和JSP的Servlet:
```xml
<!-- CXF Servlet -->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<!-- JSP Servlet -->
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
```
配置完成后,就可以在JSP页面中调用WebService接口了。例如:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://cxf.apache.org/jaxrs" prefix="cxf" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebService测试页面</title>
</head>
<body>
<h1>WebService测试页面</h1>
<form action="services/userService/getUser" method="POST">
ID:<input type="text" name="id"><br>
<input type="submit" value="查询">
</form>
<br>
<c:if test="${not empty user}">
ID:${user.id}<br>
Name:${user.name}<br>
Age:${user.age}<br>
</c:if>
</body>
</html>
```
以上代码中,`form`标签的`action`属性指向了WebService接口的URL地址,`method`属性指定了请求方式为POST。在页面中填写ID后,点击查询按钮即可调用WebService接口并获取返回结果,结果会显示在页面上。
需要注意的是,在使用CXF框架开发WebService时,需要在接口中加入`@Path`、`@GET`、`@POST`等注解来定义URL地址和请求方式。例如:
```java
@Path("/userService")
public interface UserService {
@GET
@Path("/getUser/{id}")
User getUser(@PathParam("id") String id);
}
```
以上代码中,`@Path`注解定义了接口的URL地址,`@GET`注解定义了请求方式为GET,`@PathParam`注解用于获取URL中的参数。在实现类中,需要使用`@Service`和`@Autowired`注解来定义服务和注入依赖。例如:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
public User getUser(String id) {
return userDao.getUserById(id);
}
}
```
以上代码中,`@Service`注解定义了服务,`@Autowired`注解注入了`UserDao`依赖。
阅读全文