灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2669回复:0

服务器验证提交的表单程序 java

楼主#
更多 发布于:2012-09-08 09:37


//服务器验证提交的表单程序
package cn.itcast.day_24;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URLDecoder;
public class Server {

public static void main(String[] args) throws Exception {
  System.out.println("服务已开启,监听9999端口");
  //创建服务器
  ServerSocket serversocket = new ServerSocket(9999);
  while(true){
   //等待客服端的请求
   final Socket socket = serversocket.accept();
   new Thread(){
    @Override
    public void run(){
     try {
      //创建输入流 输出流
      InputStream in = socket.getInputStream();
      PrintStream ps = new PrintStream(socket.getOutputStream());
      //OutputStream out = socket.getOutputStream();
    
      //读取从客服端发来的消息
      byte[] buffer = new byte[1024 * 1024];
      int len = in.read(buffer);
      String request = new String(buffer, 0, len);
      System.out.println(request);
    
      //从客服端发出的数据中查看到,关键的内容数据都是放在最后,并且换了两次行,从而有了截取内容的方法
      int index = request.indexOf("\r\n\r\n");  //拿到换两次行的索引
      String content = request.substring(index + 4);  //把索引加4就得到了内容数据
    
      //使用getParameter方法获取键的值
      String username = getParameter(content,"username");
      String password = getParameter(content,"password");
      String gender = getParameter(content,"gender");
      String interest = getParameter(content,"interest");
      String city = getParameter(content,"city");
      String photo = getParameter(content,"photo");
    
      System.out.println("username=" + username);  //打印出读取到的内容
      System.out.println("password=" + password);
      System.out.println("gender=" + gender);
      System.out.println("interest=" + interest);
      System.out.println("city=" + city);
      System.out.println("photo=" + photo);
    
      String mes = "注册成功";                    //开始时默认设置注册成功
    
      if("".equals(username) || username == null) //判断用户名 密码等是否为空
       mes = "用户名必须填写";
      else if("".equals(password) || password == null)
       mes = "密码必须填写";
      else if("".equals(gender) || gender == null)
       mes = "性别必须选择";
      else if("".equals(interest) || interest == null)
       mes = "兴趣必须选择";
      else if("".equals(city) || city == null)
       mes = "城市必须选择";
      else if("".equals(photo) || photo == null)
       mes = "头像必须上传";
    
      //以写代码的方式,判断是否成功
      //out.write(("<font size='7' color='" + ("注册成功".equals(mes) ? "green" : "red")+ "'>").getBytes());
    
      /*ps.println("<html>");
      ps.println("<head>");
      ps.println("<title>" + "注册结果"+ "</title>");
      ps.println("</head>");
    
      ps.println("<body>");
      ps.println(("<font size='7' color='" + ("注册成功".equals(mes) ? "green" : "red")+ "'>") + mes + "</font>");
    
      ps.println("</body>");
      ps.println("</html>");*/
      
      //新建两个文件,判断是否注册成功,读取文件的内容,暂时存储到ByteArrayOutputStream中
      FileInputStream fis = new FileInputStream("注册成功".equals(mes) ? "page/success.html" : "page/fale.html");
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      while((len = fis.read(buffer)) != -1)
       baos.write(buffer, 0, len);
    
      fis.close();
      baos.close();
    
      //ByteArrayOutputStream的toByteArray方法创建了一个新的数组,把新的数组传到string中,创建了一个新的字符串
      String response = new String(baos.toByteArray());
      //使用新的字符串替换掉文件中的"变量"
      response = response.replace("变量", mes);
      //System.out.println(response);
      //打印出服务器返回的注册成功或失败的数据
      ps.println(response + "<br><br><br>");
    
      //打印出用户注册的信息
      ps.println("username=" + username + "<br>");
      ps.println("password=" + password +  "<br>");
      ps.println("gender=" + gender + "<br>");
      ps.println("interest=" + interest + "<br>");
      ps.println("city=" + city + "<br>");
      ps.println("photo=" + photo + "<br>");
    
      //关闭本线程的流
      socket.close();
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    
    
    }
   }.start();
  }
}

//获取键值的方法,并且对值进行解码
public static String getParameter(String content, String key) throws UnsupportedEncodingException{
  String[] entryArr = content.split(";");
  for (String contents : entryArr) {
   String[] arr = contents.split("=");
   if(arr[0].equals(key))
    return arr.length == 2 ? URLDecoder.decode(arr[1], "GBK") : "";
  }
  return null;
}
}


喜欢0 评分0
游客

返回顶部