Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java servlet中的多客户端请求_Java_Servlets - Fatal编程技术网

Java servlet中的多客户端请求

Java servlet中的多客户端请求,java,servlets,Java,Servlets,我正在创建一个servlet(代理服务器),用于处理来自客户端的多个请求。我知道如何在同一个servlet上处理多个请求。我应该使用什么来处理多个请求 例如,我有两个HTML页面。它们同时向同一个servlet发送请求。如何处理来自这两个页面的请求以及如何响应这些页面(每个页面分别) 这是我的servlet代码 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Serv

我正在创建一个servlet(代理服务器),用于处理来自客户端的多个请求。我知道如何在同一个servlet上处理多个请求。我应该使用什么来处理多个请求

例如,我有两个HTML页面。它们同时向同一个servlet发送请求。如何处理来自这两个页面的请求以及如何响应这些页面(每个页面分别)

这是我的servlet代码

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String ip_Address=null;
    int ip_port=0;
    String request_action = null;
    String Target=null;
    String Action = null;
    String Setchannel = null;
    String AssetID=null;
    String AssetURI=null;
    String Position=null;
    String Speed=null;
    String Keywords=null;

    Connection con = null;

    ResultSet rs = null;
         /* String myMessageText = "action=play;assetId=1000;assetURI=/movies/avatar.ts;position=123.32";

          String[] parts=myMessageText.split(";");
          System.out.println(parts[3])*/;
          response.setContentType("text/html");
          PrintWriter out = response.getWriter();
          out.println("<html>");

          out.println("<body>");
          out.println("<h1>Servlet JDBC</h1>");




        try {
            ip_Address=request.getRemoteHost();
            ip_port=request.getRemotePort();
            request_action = request.getParameter(CommonConstants.REQ_PARAM);
            Target=request.getParameter(CommonConstants.TARGET_PARAM);
            Action=request.getParameter(CommonConstants.ACTION_PARAM);
            Setchannel=request.getParameter(CommonConstants.CHANNEL_PARAM);
            AssetID=request.getParameter(CommonConstants.ASSETID_PARAM);
            AssetURI=request.getParameter(CommonConstants.ASSETURI_PARAM);
            Position=request.getParameter(CommonConstants.POSITION_PARAM);
            Speed=request.getParameter(CommonConstants.SPEED_PARAM);
            Keywords=request.getParameter(CommonConstants.KEYORDS_PARAM);


        } 
        catch(Exception e)
        {


        }

          try {
             // Establish the connection. 
             SQLServerDataSource ds = new SQLServerDataSource();
             ds.setUser("sa");
             ds.setPassword("password123");
             ds.setServerName("ENMEDIA-EA6278E\\ENMEDIA");
            ds.setDatabaseName("IBC_ProxyServer");

             con = ds.getConnection();

             // Execute a stored procedure that returns some data.
             Statement stmt = con.createStatement();



           String sql="INSERT INTO  " + CommonConstants.Table_name + " ("+CommonConstants.Column1_ipaddress+","+CommonConstants.Column2_ip_port+","+CommonConstants.Column3_req+","+CommonConstants.Column4_target+","+CommonConstants.Column5_action+","+CommonConstants.Column6_channel +","+CommonConstants.Column7_assetID +","+CommonConstants.Column8_assetURI +","+CommonConstants.Column9_position +","+CommonConstants.Column10_speed +","+CommonConstants.Column11_keywords+" ) VALUES(?,?,?,?,?,?,?,?,?,?,?)";
            //stmt.executeUpdate("INSERT INTO " + CommonConstants.Table_name + "("+CommonConstants.Column1_ipaddress+","+CommonConstants.Column2_ip_port+","+CommonConstants.Column3_req+","+CommonConstants.Column4_target+","+CommonConstants.Column5_action+","+CommonConstants.Column6_channel +","+CommonConstants.Column7_assetID +","+CommonConstants.Column8_assetURI +","+CommonConstants.Column9_position +","+CommonConstants.Column10_speed +","+CommonConstants.Column11_keywords+") VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}')",ip_Address,ip_port,request_action,Target,Action,Setchannel,AssetID,AssetURI,Position,Speed,Keywords);
           PreparedStatement pst = con.prepareStatement(sql);
           pst.setString(1, ip_Address);
           pst.setLong(2, ip_port);
           pst.setString(3, request_action);
           pst.setString(4, Target);
           pst.setString(5, Action);
           pst.setString(6, Setchannel);
           pst.setString(7, AssetID);
           pst.setString(8, AssetURI);
           pst.setString(9, Position);
           pst.setString(10, Speed);
           pst.setString(11, Keywords);
           pst.executeUpdate();
           con.close();
           out.println("<br>"+ip_Address+"</br>");
           out.println("<br>"+ip_port+"</br>");
           out.println("<br>"+request_action+"</br>");
           out.println("<br>"+Target+"</br>");
           out.println("<br>"+Action+"</br>");
           out.println("<br>"+Setchannel+"</br>");
           out.println("<br>"+AssetID+"</br>");
           out.println("<br>"+AssetURI+"</br>");
           out.println("<br>"+Position+"</br>");
           out.println("<br>"+Speed+"</br>");
           out.println("<br>"+Keywords+"</br>");

           out.println("</body></html>");  
         } catch (Exception e) {
             System.err.println("Got an exception! ");
             System.err.println(e.getMessage());
         }



}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//TODO自动生成的方法存根
字符串ip_地址=null;
int ip_端口=0;
字符串请求_action=null;
字符串目标=null;
字符串操作=null;
字符串Setchannel=null;
字符串AssetID=null;
字符串AssetURI=null;
字符串位置=空;
字符串速度=空;
字符串关键字=null;
连接con=null;
结果集rs=null;
/*String myMessageText=“action=play;assetId=1000;assetURI=/movies/avatar.ts;position=123.32”;
String[]parts=myMessageText.split(“;”);
系统输出打印项次(第[3]部分)*/;
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.println(“”);
out.println(“”);
out.println(“Servlet JDBC”);
试一试{
ip_Address=request.getRemoteHost();
ip_port=request.getRemotePort();
request\u action=request.getParameter(CommonConstants.REQ\u PARAM);
Target=request.getParameter(CommonConstants.Target_参数);
Action=request.getParameter(CommonConstants.Action_参数);
Setchannel=request.getParameter(CommonConstants.CHANNEL_PARAM);
AssetID=request.getParameter(CommonConstants.AssetID_PARAM);
AssetURI=request.getParameter(CommonConstants.AssetURI_PARAM);
Position=request.getParameter(CommonConstants.Position_参数);
速度=请求.getParameter(CommonConstants.Speed_PARAM);
关键词=request.getParameter(CommonConstants.KEYORDS_-PARAM);
} 
捕获(例外e)
{
}
试一试{
//建立连接。
SQLServerDataSource ds=新SQLServerDataSource();
ds.setUser(“sa”);
设置密码(“密码123”);
ds.setServerName(“ENMEDIA-EA6278E\\ENMEDIA”);
ds.setDatabaseName(“IBC_ProxyServer”);
con=ds.getConnection();
//执行一个返回一些数据的存储过程。
语句stmt=con.createStatement();
String sql=“插入“+CommonConstants.Table_name+”(“+CommonConstants.Column1_ip地址+”、“+CommonConstants.Column2_ip_端口+”、“+CommonConstants.Column3_请求+”、“+CommonConstants.Column4_目标+”、“+CommonConstants.Column5_操作+”、“+CommonConstants.Column6_通道+”、“+CommonConstants.Column7_资产+”、“+CommonConstants.Column8_资产+”、”+CommonConstants.Column9_位置+”,“+CommonConstants.Column10_速度+”,“+CommonConstants.Column11_关键字+”)值(?,,,,,,,,,,,,,?,,,?);
//stmt.executeUpdate(“插入“+CommonConstants.Table_name+”(“+CommonConstants.Column1_ip地址+”、“+CommonConstants.Column2_ip_端口+”、“+CommonConstants.Column3_请求+”、“+CommonConstants.Column4_目标+”、“+CommonConstants.Column5_操作+”、“+CommonConstants.Column6_通道+”、“+CommonConstants.Column7_资产+”、”+CommonConstants.Column8_assetURI+”、“+CommonConstants.Column9_position+”、“+CommonConstants.Column10_speed+”、“+CommonConstants.Column11_keywords+”)值(“{0}'、“{1}'、{2}'、“{3}'、“{4}'、{5}'、“{6}'、{7}'、{7}'、{8}'、{8}'、{9}'、{10}'、{11}'、{ip地址、ip地址、ip地址、端口、目标、AssetUrl、操作、目标、AssetUrl位置、AssetUrl位置、AssetUrl、AssetUrl、AssetUrl、AssetUrl、AssetUrl、AssetUrl、AssetUrl;
PreparedStatement pst=con.prepareStatement(sql);
pst.setString(1,ip_地址);
pst.setLong(2,ip_端口);
pst.setString(3,请求动作);
pst.setString(4,目标);
pst.设置管柱(5,动作);
pst.设置管柱(6,设置通道);
pst.固定管柱(7,AssetID);
固定管柱(8,组件);
pst.固定管柱(9,位置);
pst.设置管柱(10,速度);
pst.setString(11,关键字);
pst.executeUpdate();
con.close();
out.println(“
”+ip地址+”
”; out.println(“
”+ip\u端口+”
”; out.println(“
”+请求操作+”
”; out.println(“
”+Target+“
”); out.println(“
”+Action+“
”); out.println(“
”+Setchannel+“
”); out.println(“
”+AssetID+“
”); out.println(“
”+AssetURI+“
”); out.println(“
”+位置+“
”); out.println(“
”+速度+“
”); out.println(“
”+关键字+”
”); out.println(“”); }捕获(例外e){ System.err.println(“得到一个异常!”); System.err.println(e.getMessage()); } }
假设有两个客户机A和B A发送

B发送

我必须获取A的参数并将其存储在数据库中,同样,我必须将B的数据存储在另一个表中

A------->1

B------>目标=12;动作=设置通道;频道=34


如何响应这两个不同的客户端通常不必关心同时处理多个请求的事实。应用服务器为您完成这项工作。您的servlet应该是无状态的,即避免在servlet的类变量中存储任何信息。如果需要此类信息,请使用请求和会话属性

我建议您参考关于ServletAPI和Servlet/jsp开发的多个可用教程之一。例如,在您的情况下,y代码的50%以上