我使用球衣JAX-Rs作为Web服务来查询mysql。我尝试通过混合移动应用程序使用Web服务。
我指的是这个 http://coenraets.org/blog/2011/11/building-restful-services-with-java-
using-jax-rs-and-jersey-sample-
application/#comment-440541
在服务器端,以下代码在tomcat server7中运行以查询sql
@Path("/employees")
public class EmployeeResource {
EmployeeDAO dao = new EmployeeDAO();
@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public List<Employee> findAll() {
return dao.findAll();
}
}
公共类EmployeeDAO {
public List<Employee> findAll() {
List<Employee> list = new ArrayList<Employee>();
Connection c = null;
String sql = "SELECT e.id, e.firstName, e.lastName, e.title FROM employee as e";
try {
c = ConnectionHelper.getConnection();
Statement s = c.createStatement();
ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
list.add(processSummaryRow(rs));
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
ConnectionHelper.close(c);
}
return list;
}
protected Employee processSummaryRow(ResultSet rs) throws SQLException {
Employee employee = new Employee();
employee.setId(rs.getInt("id"));
employee.setFirstName(rs.getString("firstName"));
employee.setLastName(rs.getString("lastName"));
employee.setTitle(rs.getString("title"));
/*employee.setPicture(rs.getString("picture"));
employee.setReportCount(rs.getInt("reportCount"));*/
return employee;
}
}
我已经创建了数据库目录,表名称为employee,具有字段id,firstName,lastName,title。
现在,我在 同一项目 的web-content文件夹中拥有html文件。
<!DOCTYPE HTML>
<html>
<head>
<title>Employee Directory</title>
</head>
<body>
<h1>Employee Directory</h1>
<ul id="employeeList"></ul>
<script src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script src="js/employeelist.js"></script>
</body>
</html>
员工列表脚本
getEmployeeList();
function getEmployeeList() {
$.getJSON(serviceURL + 'employees', function(data) {
$('#employeeList li').remove();
var employees = data.employee;
$.each(employees, function(index, employee) {
$('#employeeList').append(
'<li><a href="employeedetails.html#' + employee.id + '">'
+ employee.firstName + ' ' + employee.lastName + ' ('
+ employee.title + ')</a></li>');
});
});
}
这将在“索引”页面中显示确切的员工详细信息。
现在我已经在 另一个项目 中创建了一个html页面,我将在其中放置与上面指定的相同的$ .getJSON调用,这将在控制台中引发错误,
XMLHttpRequest cannot load http://localhost:8181/jQueryJAXRS/rest/employees. Origin null is not allowed by Access-Control-Allow-Origin.
实际上我尝试开发具有客户端和服务器基础结构的应用程序,因此我需要在客户端中包含html文件才能在服务器端使用jersey Web服务。如果我从$.getJSON或$ .ajax调用非常有用另一个项目中的html文件以使用Web服务。
when i use this url http://localhost:8181/jQueryJAXRS/rest/employees in my browser
它显示xml
<employees>
<employee>
<firstName>john</firstName>
<id>1</id>
<lastName>doe</lastName>
<reportCount>0</reportCount>
<title>trainee</title>
</employee>
<employee>
<firstName>james</firstName>
<id>2</id>
<lastName>dane</lastName>
<reportCount>0</reportCount>
<title>developer</title>
</employee>
<employee>
<firstName>ramsy</firstName>
<id>4</id>
<lastName>stuart</lastName>
<reportCount>0</reportCount>
<title>QA</title>
</employee>
</employees>
但是当我尝试通过脚本方式时,它将显示发生CORS错误。提出一些想法对我有帮助。
提前致谢 。
您必须使用CORS。
为了那个原因:
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowGenericHttpRequests</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowSubdomains</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, HEAD, POST, OPTIONS</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Content-Type, X-Requested-With</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>X-Test-1, X-Test-2</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.maxAge</param-name>
<param-value>-1</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/EmployeeResource</url-pattern>
</filter-mapping>
Access-Control-Allow-Origin响应 header 指示是否该响应可以与具有给定资源共享原点。 Header type Response header Forbidden header name no 语法 Access-Control-Allow-Origin: *Access-Control-Allow-Origin: <origin> 指令 * 对于没有凭据的请求,服务
问题内容: 我是Ajax的新手,只是受过此跨域调用的任务。我们的网页上有一个文本框,用户可用来执行公司名称搜索。通过单击文本框旁边的按钮,将请求Ajax调用。不幸的是,Web服务位于单独的域中,因此自然会引起问题。 以下是我使这项工作的最佳尝试。我还要注意,此调用的目的是以XML格式返回结果,该结果将在请求的一部分中进行解析。 这又是错误消息: 对于解决方法,我不知所措,将不胜感激任何想法。 问题
null 服务器的响应如下: XMLHttpRequest无法加载http://nqatalog.negroesquisso.pt/login.php。Access-Control-Allow-Origin不允许Origin 。 如何解决此问题?
我有一个网络服务,比如: 在链接中: 我正在尝试通过链接中的AlFresco获取此Web服务的响应:。我现在有不同的端口(当我有相同的端口时,这很好地工作),所以,使用不同的端口,我在AlFresco中得到错误: 跨源请求被阻止:同一源策略不允许在以下位置读取远程资源:http://localhost:8081/ChangesPDF/Changes?...(原因:缺少CORS的“访问控制允许原点”
问题内容: 我正在尝试使用以下代码获取我的instagram feed 我得到的错误是 所请求的资源上没有“ Access-Control-Allow-Origin”标头。 有没有解决的办法? 问题答案: Instagram API支持,因此添加到url并添加到调用中,如下所示:
问题内容: 这可能是一个简单的(一系列)问题,但我无法解决。 我正在尝试从托管在我网站上的Web应用程序访问github api。简而言之,这是代码: 如果我将浏览器指向在我的保管箱帐户上载的这个简单页面,则一切正常。相反,如果我将浏览器指向该网站上上传的这个简单页面,则会得到臭名昭著的异常: 因此,问题是: 为什么在Dropbox上可以使用? 我了解使用CORS即使在网站上也可以使用。这是我的A