JDK:1.7
apache-tomcat-7.0.59
CXF 2.4
Spring 3.1
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>ssm</display-name>
<welcome-file-list>
<welcome-file>/index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<filter>
<description>字符集过滤器</description>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<description>字符集编码</description>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<description>spring监听器</description>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
</web-app>
service.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd ">
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
<jaxrs:server id="userServiceRest" address="/service">
<jaxrs:serviceBeans>
<ref bean="userService"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jsonProvider"/>
</jaxrs:providers>
</jaxrs:server>
</beans>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd ">
<import resource="service.xml"/>
<context:component-scan base-package="service" />
<!-- JNDI外部名称 -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/myoracle</value>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean name="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置事务切面 -->
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(public * service.*.*(..))" advice-ref="txAdvice" />
</aop:config>
<!-- 配置切面方法及使用的事务 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true" />
<tx:method name="get*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="*" read-only="false" />
</tx:attributes>
</tx:advice>
<!-- 配置Mybatis的SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置MyBatis XML与DAO的映射 -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="dao" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
</beans>
UserVO
package entityVO;
public class UserVO {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toString() {
return "UserVO [id=" + id + ", username=" + username + ", password="
+ password + "]";
}
}
IUserService 接口
package service;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import entityVO.UserVO;
@Path("/userService")
@Produces(MediaType.APPLICATION_JSON)
public interface IUserService {
@GET
@Path("/findUserInfo")
public UserVO findUserInfo(@QueryParam("") UserVO user);
@GET
@Path("/findUser/{username}/{password}")
public UserVO findUser(@PathParam("")UserVO user);
@POST
@Path("/findUserList/{username}")
public List<UserVO> findUserList(@QueryParam("")UserVO user,@PathParam("username")String userName);
@POST
@Path("/findUserList")
public List<UserVO> findUserList(@QueryParam("")UserVO user);
@POST
@Path("/findUserList2")
public List<UserVO> findUserList2(UserVO user);
}
UserService 实现类
package service.impl;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import service.IUserService;
import dao.IUserDao;
import entityVO.UserVO;
@Named
public class UserService implements IUserService {
@Inject
IUserDao userDao;
UserVO userVO=new UserVO();
UserService(){
userVO.setId(1);
userVO.setPassword("密码");
userVO.setUsername("账号");
}
public UserVO findUserInfo(UserVO user) {
System.out.println(user);
return userVO;
}
public UserVO findUser(UserVO user) {
System.out.println(user);
return userVO;
}
public List<UserVO> findUserList(UserVO user, String userName) {
System.out.println(user);
System.out.println(userName);
List<UserVO> userList=new ArrayList<UserVO>();
for(int i=0;i<15;i++){
userList.add(userVO);
}
return userList;
}
public List<UserVO> findUserList(UserVO user) {
System.out.println(user);
List<UserVO> userList=new ArrayList<UserVO>();
for(int i=0;i<15;i++){
userList.add(userVO);
}
return userList;
}
public List<UserVO> findUserList2(UserVO user) {
System.out.println(user);
List<UserVO> userList=new ArrayList<UserVO>();
for(int i=0;i<15;i++){
userList.add(userVO);
}
return userList;
}
}
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
/* url:"services/service/userService/findUserList", */
url:"services/service/userService/findUserList2",
/* url:"services/service/userService/findUserList/张三", */
type:"POST",
data:{username:"张三",password:"密码"},
contentType:"application/json",
aync:false,
/* processData: false, //设置 processData 选项为 false,防止自动转换数据格式 */
success:function(result){
/* debugger;
console.log(result); */
}
});
});
</script>
<title>Insert title here</title>
</head>
<body>
<h1 id="result"></h1>
</body>
</html>
我在公司的项目里定义的接口方法Post 可以拿VO接收前台请求的JSON字符,可以自动转化成VO 自己搭建就不可以 请求成功了但VO的属性都是空的 是少了什么配置或者哪里错误了吗?请大牛们指导指导纠结好久了。。。
7 个解决方案
#1
good luck
#2
json字符串里面有值么?
#3
收不到参数的话就把程序简化,比如按照同样的方式,就写个最简单的sample看看能不能得到参数,然后逐步增加条件,看看是哪一步出得问题。
发布web service并不需要配置xml,你要做的就是鼠标点击几下,然后系统会根据class自动生成一个web service 文件,把这个文件放到tomcat下,就可以得到wsdl。如果你用的工具是要配xml的,就换一个,用不好的工具只会给自己造成麻烦,并且就算你掌握了,也对你的技术水平没有什么帮助。
发布web service并不需要配置xml,你要做的就是鼠标点击几下,然后系统会根据class自动生成一个web service 文件,把这个文件放到tomcat下,就可以得到wsdl。如果你用的工具是要配xml的,就换一个,用不好的工具只会给自己造成麻烦,并且就算你掌握了,也对你的技术水平没有什么帮助。
#4
这是我前台调用的代码 用POST方法 传参 data:{username:"张三",password:"密码"}都有值。。就是Service里拿不到传的值
$(document).ready(function(){
$.ajax({
/* url:"services/service/userService/findUserList", */
url:"services/service/userService/findUserList2",
type:"POST",
data:{username:"张三",password:"密码"},
contentType:"application/json",
aync:false,
/* processData: false, //设置 processData 选项为 false,防止自动转换数据格式 */
success:function(result){
/* debugger;
console.log(result); */
}
});
});
#5
我这是结合了Spring和CXF 所以配置了XML,而且我就只做了一个页面加载发送POST请求已经是最简化了。。GET方式都可以拿到值 就POST无法取值
#6
进过几天查询资料终于找到处理方法。把前台请求的DATA参数进行JSON.stringify处理下就可以了
#7
在下看到,应该是你 IUserService 接口的第16行,@Produces(MediaType.APPLICATION_JSON),注解写错了吧,应该用@Consumes({MediaType.APPLICATION_JSON) 吧,
2、 consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
在下刚入行,请多指点,,小刘,微信roadbiker,在新泽西
2、 consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
在下刚入行,请多指点,,小刘,微信roadbiker,在新泽西
#1
good luck
#2
json字符串里面有值么?
#3
收不到参数的话就把程序简化,比如按照同样的方式,就写个最简单的sample看看能不能得到参数,然后逐步增加条件,看看是哪一步出得问题。
发布web service并不需要配置xml,你要做的就是鼠标点击几下,然后系统会根据class自动生成一个web service 文件,把这个文件放到tomcat下,就可以得到wsdl。如果你用的工具是要配xml的,就换一个,用不好的工具只会给自己造成麻烦,并且就算你掌握了,也对你的技术水平没有什么帮助。
发布web service并不需要配置xml,你要做的就是鼠标点击几下,然后系统会根据class自动生成一个web service 文件,把这个文件放到tomcat下,就可以得到wsdl。如果你用的工具是要配xml的,就换一个,用不好的工具只会给自己造成麻烦,并且就算你掌握了,也对你的技术水平没有什么帮助。
#4
这是我前台调用的代码 用POST方法 传参 data:{username:"张三",password:"密码"}都有值。。就是Service里拿不到传的值
$(document).ready(function(){
$.ajax({
/* url:"services/service/userService/findUserList", */
url:"services/service/userService/findUserList2",
type:"POST",
data:{username:"张三",password:"密码"},
contentType:"application/json",
aync:false,
/* processData: false, //设置 processData 选项为 false,防止自动转换数据格式 */
success:function(result){
/* debugger;
console.log(result); */
}
});
});
#5
我这是结合了Spring和CXF 所以配置了XML,而且我就只做了一个页面加载发送POST请求已经是最简化了。。GET方式都可以拿到值 就POST无法取值
#6
进过几天查询资料终于找到处理方法。把前台请求的DATA参数进行JSON.stringify处理下就可以了
#7
在下看到,应该是你 IUserService 接口的第16行,@Produces(MediaType.APPLICATION_JSON),注解写错了吧,应该用@Consumes({MediaType.APPLICATION_JSON) 吧,
2、 consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
在下刚入行,请多指点,,小刘,微信roadbiker,在新泽西
2、 consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
在下刚入行,请多指点,,小刘,微信roadbiker,在新泽西