使用$ http从Javascript访问SERVLET

时间:2017-03-15 10:00:53

标签: javascript java servlets tomcat8

我遇到一些困难解决一个奇怪的情况(很可能是我的代码中的一个小错误,我看不到)。

我有以下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语句的结果。

我的问题是:

  1. 无论发送什么(通过参数p_Query),servlet都看不到任何请求(即在JAVA语句中if (Web_Request == null)变量Web_Request始终为{ {1}})并返回硬编码的select语句

  2. 的结果
  3. 如果(在JavaScript中)我将null更改为GET,我会收到404错误代码(未找到,也显示在TOMCAT的日志中),

  4. 虽然我的开发环境(Brackets)和TOMCAT在同一台机器上运行,但我收到CORS错误,除非我在禁用Web安全的情况下运行CHROME。

  5. 任何建议/更正都将受到高度赞赏。

    编辑 - 澄清:

    SERVLET包含POSTdoGet个函数(关于上面的第2点)。

0 个答案:

没有答案