我遇到一些困难解决一个奇怪的情况(很可能是我的代码中的一个小错误,我看不到)。
我有以下AngularJS模块:
var MyApp = angular.module('MyApp');
MyApp.factory('DB_Services', ['$http' , '$q' , function($http , $q) {
var l_Result ;
var DB_Services = function(p_URL_Root , p_Query) {
var l_deferred = $q.defer();
var l_params = JSON.stringify(p_Query) ;
var l_url = "http://127.0.0.1:8080/MEKUWQDispatcher/DispatcherClass?";
var l_params = 'request=' + encodeURIComponent(JSON.stringify(p_Query)) ;
var req = { url : l_url,
method :"GET",
timeout:10000 ,
headers: {
'Content-Type': 'application/json ; charset=UTF-8'
},
data:l_params
} ;
$http(req ).
success(function(data, status, headers, config) {
l_deferred.resolve(data);
}).
error(function(data, status, headers, config) {
l_deferred.resolve(status);
});
return l_deferred.promise;
return l_deferred.promise;
} ;
return DB_Services;
}]);
它向在TOMCAT8之上运行的基于JAVA的SERVLET发送请求。
SERVLET包含以下代码:
:
:
final String DB_URL="jdbc:sqlserver://RSHSQLTDBD\\SQLDBD:1434;DatabaseName=" + DB_Name + ";user=" + USER + ";password=" + PASS ;
Connection conn = null ;
Statement stmt = null ;
CallableStatement Call_stmt = null ;
ResultSet rs ;
boolean ExecutionResult ;
String Web_Request = request.getParameter("request") ;
String Web_Response = null ;
int Web_Result_Code = 0 ;
String Web_Result_Description = null ;
// Register driver to DB...
try {
DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (Web_Request == null) {
:
:
因此,如果没有收到请求,它会响应发送到数据库的硬编码 select 语句的结果,否则会调用发送请求的存储过程。
与DB的连接似乎有效,因为使用浏览器调用没有数据的servlet会显示硬编码的select语句的结果。
我的问题是:
无论发送什么(通过参数p_Query
),servlet都看不到任何请求(即在JAVA语句中if (Web_Request == null)
变量Web_Request
始终为{ {1}})并返回硬编码的select语句
如果(在JavaScript中)我将null
更改为GET
,我会收到404错误代码(未找到,也显示在TOMCAT的日志中),
虽然我的开发环境(Brackets)和TOMCAT在同一台机器上运行,但我收到CORS错误,除非我在禁用Web安全的情况下运行CHROME。
任何建议/更正都将受到高度赞赏。
编辑 - 澄清:
SERVLET包含POST
和doGet
个函数(关于上面的第2点)。