服务器验证提交的表单程序 java
3197 点击·0 回帖
![]() | ![]() | |
![]() | //服务器验证提交的表单程序 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; } } | |
![]() | ![]() |