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

本文介绍了一个简单的Java服务器程序,该程序用于验证客户端提交的表单数据。通过解析HTTP请求,提取并验证用户名、密码等字段,确保数据完整性,并根据验证结果返回相应的HTML页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//服务器验证提交的表单程序   点击下载源码

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;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值