会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132465个问题
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 34846楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 34848楼
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 34850楼
JAVA 全系列/(旧的隐藏)第十五阶段:百战商城项目(Spring Cloud最新架构)/百战商城项目 34851楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 34852楼
Python 全系列/第七阶段:网页编程基础/JavaScript 34854楼
Python 全系列/第十五阶段:Python 爬虫开发/移动端爬虫开发- 34858楼

老师请问一下我的代码是跟着老师一步一步敲的为啥我登录结果是这样的,bjsxt当时换成xx登录成功了一次,在次登录的时候又不行了,请老师解答一下

package com.bjsxt.server;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import com.bjsxt.servlet.Servlet;
import com.bjsxt.util.IOCloseUtil;
/**
 * 服务器,用于启动和停止服务
 * @author Administrator
 *
 */
public class Server {
 private ServerSocket server;
 public static void main(String[] args) {
  Server server=new Server();//创建服务器对象
  server.start();
 }
 public void start(){
  this.start(8888);
 }
 public void start(int port){
  try {
   server=new ServerSocket(port);
   this.receive(); //调用接收请求信息的方法
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 private void receive() {
  try {
   //(1)监听
   Socket client=server.accept();
   
   //封装请求信息
   Request req=new Request(client.getInputStream());
   
   /**做出响应*/
   /*StringBuilder sb=new StringBuilder();
   sb.append("HTTP/1.1").append(" ").append(200).append(" ").append("OK").append("\r\n");
   sb.append("Content-Type:text/html;charset=utf-8").append("\r\n");
   //内容
   String str="<html><head><title>响应结果</title></head><body>成功</body></html>";
   sb.append("Content-Length:"+str.getBytes("utf-8").length).append("\r\n");
   sb.append("\r\n");
   sb.append(str);
   
   //通过输出流发送出去
   BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
   bw.write(sb.toString());
   bw.flush();
   bw.close();*/
   Response rep=new Response(client.getOutputStream());
   Servlet servlet=WebApp.getServlet(req.getUrl());
   int code=200;
   if (servlet==null) {
    code=404;
   }
   //调用Servlet中的服务的方法
   try {
    servlet.service(req, rep);
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   rep.pushToClient(code);
   IOCloseUtil.closeAll(client);
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 public void stop(){
  
 }
package com.bjsxt.servlet;
import com.bjsxt.server.Request;
import com.bjsxt.server.Response;
/**
 * 是所有请求的Servlet的父类
 * 
 * @author Administrator
 *
 */
public abstract class Servlet {
 public void service(Request req,Response rep) throws Exception{
  this.doGet( req, rep);
  this.doPost( req, rep);
 }
 public abstract void doGet(Request req,Response rep) throws Exception;
 public abstract void doPost(Request req,Response rep) throws Exception;
}
package com.bjsxt.servlet;
import com.bjsxt.server.Request;
import com.bjsxt.server.Response;
public class LoginServlet extends Servlet{
 @Override
 public void doGet(Request req, Response rep) throws Exception {
   //获取请求参数
  String name=req.getParameter("username");
  String pwd=req.getParameter("pwd");
  
  if(this.login(name, pwd)){
   //调用响应中的构建内容的方
   rep.println(name+"登录成功");
  }else{
   rep.println(name+"登录失败,对不起,账号或密码不正确");
  }
  
 }
 private boolean login(String name,String pwd){
  if ("xx".equals(name)&&"123".equals(pwd)) {
   return true;
  }
  return false;
 }
 @Override
 public void doPost(Request req, Response rep) throws Exception {
  // TODO Auto-generated method stub
  
 }
 
}
package com.bjsxt.server;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import com.bjsxt.util.IOCloseUtil;
/**
 * 响应
 * @author Administrator
 *
 */
public class Response {
 private StringBuilder headInfo;//响应头
 private StringBuilder content;//响应内容
 private int length;//响应内容的长度
 //流
 private BufferedWriter bw;
 
 //两个常量,换行和空格
 private static final String CRLF="\r\n";//换行
 private static final String BLANK=" ";//空格
 
 //构造方法
 public Response() {
  headInfo=new StringBuilder();
  content=new StringBuilder();
  
 }
 //带参构造方法
 public Response(OutputStream os){
  this();//调用本类的无参构造方法
  try {
   bw=new BufferedWriter(new OutputStreamWriter(os, "utf-8"));
  } catch (UnsupportedEncodingException e) {
   headInfo=null;
  }
  
 }
 //构造正文部分
 public Response print(String info){
  content.append(info);
  try {
   length+=info.getBytes("utf-8").length;
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return this;
 }
 public Response println(String info){
  content.append(info).append(CRLF);
  try {
   length+=(info+CRLF).getBytes("utf-8").length;
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return this;
 }
 
 //构造响应头
 
 private void createHeadInfo(int code){
  headInfo.append("HTTP/1.1").append(BLANK).append(code).append(BLANK);
  switch (code) {
  case 200:
   headInfo.append("OK");
   break;
  case 500:
   headInfo.append("SERVER ERROR");
   break;
  default:
   headInfo.append("NOT FOUND");
   break;
  }
  headInfo.append(CRLF);
  headInfo.append("Content-Type:text/html;charset=utf-8").append(CRLF);
  headInfo.append("Content-Length:"+length).append(CRLF);
  headInfo.append(CRLF);
 }
 /**
  * 推送到客户机的浏览器
  * @param code
  */
 public void pushToClient(int code){
  if (headInfo==null) {
   code=500;
  }
  try {
   //调用本类中的构造响应头
   this.createHeadInfo(code);
   bw.write(headInfo.toString());
   bw.write(content.toString());
   bw.flush();
   this.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 public void close(){
  IOCloseUtil.closeAll(bw);
 }
}

1576990078(1).jpg

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 34859楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637