web服务器技术

  • c2_177723
    了解作者
  • 1.8MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-21 10:47
    上传日期
通过对底层的服务的书写,通过request,response请求与响应,来完成数据的交互,并且利用多线程,实现多次访问。
手写webTomcat.rar
内容介绍
package cn.tedu.core; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import com.sun.net.httpserver.HttpContext; import cn.tedu.context.ServerContext; import cn.tedu.context.httpContext; import cn.tedu.http.HttpRequest; import cn.tedu.http.HttpResponse; import cn.tedu.util.JDBCUtils; /** * @author KaiLeon */ //1.创建线程类 public class ClientHandler implements Runnable{ //2.创建代表客户端Socket对象 private Socket socket; //3.创建构造函数,传入Socket对象并保存到类中 public ClientHandler(Socket socket) { this.socket= socket; } //4.重写run方法 @SuppressWarnings("resource") @Override public void run() { try { //利用请求对象完成请求对象 HttpRequest request = new HttpRequest( socket.getInputStream()); //利用响应对象完成响应过程 HttpResponse response = new HttpResponse( socket.getOutputStream()); if (request.getUri()!=null&&request.getUri().length()>0) { //判断用户是否完成登陆或注册功能 if(request.getUri() .startsWith("/LoginUser") ||request.getUri() .startsWith("/RegistUser")) { //利用service方法完成登陆或者注册功能 service(request,response); return;//响应后不用执行下面代码 } //协议名版本号 response.setProtocol(ServerContext.protocol); // //响应类型 // response.setContentType("text/html"); //向浏览器输出网页文件 File file = new File(ServerContext.webRoot+request.getUri()); response.setContentType(getContentTypeByFile(file)); //判断访问文件是否存在 if(!file.exists()) { //跳转404页面 file = new File( ServerContext.webRoot+ServerContext.notFoundPage); response.setStatus(httpContext.CODE_ERROR); }else { //状态码 response.setStatus(httpContext.CODE_OK); } //响应长度 response.setContentLength((int) file.length()); //响应网页文件 BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); byte[] bs = new byte[(int) file.length()]; bis.read(bs); //响应浏览器 response.getOut().write(bs); response.getOut().flush(); socket.close(); } } catch (IOException e) { e.printStackTrace(); } } //完成登陆或注册,操作数据库过程 private void service(HttpRequest request, HttpResponse response) { //完成注册,添加数据 if(request.getUri().startsWith("/RegistUser")) { Connection conn = null; PreparedStatement ps = null; try { //1.注册驱动 //2.获取数据库连接 conn = JDBCUtils.getConnection(); //3.获取传输器 String sql = "insert into user values(null,?,?)"; ps = conn.prepareStatement(sql); //设置参数 String name = request.getParameter("username"); String pwd = request.getParameter("password"); ps.setString(1,name); ps.setString(2,pwd); //4.执行SQL int rows = ps.executeUpdate(); //5.遍历结果集 System.out.println(rows); //给浏览器响应注册成功页面 response.setProtocol(ServerContext.protocol); response.setStatus(httpContext.CODE_OK); //响应注册成功文件 File file = new File(ServerContext.webRoot+"/reg_success.html"); response.setContentType( getContentTypeByFile(file)); response.setContentLength((int) file.length()); //读文件,写文件 BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); byte[] b =new byte[(int) file.length()]; bis.read(b); response.getOut().write(b); response.getOut().flush(); socket.close(); } catch (Exception e) { e.printStackTrace(); }finally { JDBCUtils.close(conn, ps, null); } } } //根据访问文件的后缀名作为Key,去map中找value private String getContentTypeByFile(File file) { //fileName = index.html String fileName = file.getName(); //根据文件名获取文件的后缀名 String ext = fileName.substring( fileName.lastIndexOf(".")+1); //拿着后缀名,去map中找value //{html,text/html jpg,image/jpeg} String val = ServerContext.typeMap.get(ext); return val; } }
评论
    相关推荐
    • web服务器
      简单的web服务器 ,通过程序可以建立一个web服务器平台,该程序我已经调试通过请放心使用,用户使用手册已经放在里面了。
    • ASP WEB服务器
      紫雨轩ASP WEB服务器 可以在本机搭建web服务器,很好用的。。
    • web服务器温度
      web服务器温度
    • 易语言WEB服务器
      易语言WEB服务器
    • web代理服务器
      实现了基本的web服务器的功能,可以帮你更好的了解web服务器的基本工作原理
    • Web服务器案例
      Web服务器案例 Web服务器案例 Web服务器案例 Web服务器案例
    • 易语言web服务器
      易语言web服务器源码系统结构:创建窗口,窗口函数,菜单处理,客户进入,客户离开,数据到达,协议处理,获取用户数据,删除用户数据,LogAdd,创建完毕,创建托盘图标,弹出托盘气泡,删除图盘图
    • web服务器编程
      只是一个基于web service服务器编程的教学代码,简单易懂
    • 简易Web服务器
      简易Web服务器资料,供大家一起参考学习。
    • 易语言web服务器
      易语言web服务器系统结构:消息替换, ======窗口程序集1 || ||------_透明标签3_鼠标左键被按下 || ||------_透明标签2_鼠标左键被按下 || ||------__启动窗口_创建完毕 || ||------_服务器1_客户进入