【Servlet】HTTP的Servlet实现

记Spring HTTP Invoker远程调用的使用(二)基于Servlet方式,配置servlet映射url-pattern实现 记Spring HTTP Invoker远程调用的使用(二)基于Servlet方式,配置servlet映射url-pattern实现 基于Servlet方式,由org.springframework.web.context.support.HttpRequestHandlerServlet去拦截url- pattern匹配的请求,查找对应的bean配置(本文通过applicationContext-servers.xml文件管理服务端bean)。 阅读详情

在JavaEE的Servlet规范中,实现HTTP协议由“javax.servlet.http.HttpServlet类”实现。该类封装了一系列的请求和响应操作,使得开发者直接实现功能逻辑,而不必关乎网络连接、错误处理等。对于该类的众多API,仍需牢牢把握住请求和响应分别有三大组成部分,对相应的API进行分类记忆,十分清晰明了。

Table of Contents

Servlet的HTTP请求

获取客户机信息

获取请求行

获取请求头

获得实体内容(客户端提交的数据)

HSRequest是一个域对象

请求的包含&转发

Servlet的HTTP响应

设置响应行

重定向

设置响应头

页面乱码

设置响应体

向浏览器输出文本

向浏览器输出图片


通过本文,我将介绍使用频率最高的、请求与响应的三大组成部分的API用法与示例:

HTTP请求:javax.servlet.http.HttpServletRequest

  • 获取请求行
  • 获取请求头
  • 获取实体内容
  • 其他操作

HTTP响应:javax.servlet.http.HttpServletResponse

  • 设置响应行
  • 设置响应头
  • 设置响应体

Servlet的HTTP请求

HTTP请求对象:

javax.servlet.http.HttpServletRequest对象,主要功能是获取请求信息。

获取客户机信息

  1. getRemoteAddr 方法返回发出请求的客户机的IP地址。
  2. getRemoteHost 方法返回发出请求的客户机的完整主机名。
  3. getRemotePort 方法返回客户机所使用的网络端口号。
  4. getLocalAddr 方法返回WEB服务器的IP地址。
  5. getLocalName 方法返回WEB服务器的主机名。

方法使用演示
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(
		urlPatterns= {"/hello/http"},
		name="ServletHTTP"
		)
public class ServletHTTP extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String remoteAdd = req.getRemoteAddr(); //其他getXxxHost/Port等方法同理
		String localAdd = req.getLocalAddr();
		System.out.println("RemoteAddress"+remoteAdd+", LocalAddress"+localAdd);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}
访问:http://localhost:8080/K-Servlet/hello/http

获取请求行

获取请求行的方法:

  1. getRequestURL 方法返回客户端发出请求时的完整URL。
  2. getRequestURI 方法返回请求行中的资源名部分。
  3. getQueryString 方法返回请求行中的参数部分。
  4. getPathInfo 方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Serv的路径之后和查询参数之前的内容,它以“/”开头。
  5. String getContextPath() web应用的名称

快速理解用法
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(
		urlPatterns= {"/hello/http"},
		name="ServletHTTP"
		)
public class ServletHTTP extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		StringBuffer requestURL = req.getRequestURL();
		String requestURI = req.getRequestURI();
		String queryString = req.getQueryString();
		String contextPath = req.getContextPath();
		
		System.out.println("URL:"+requestURL+", URI:"+requestURI+", queryString"+queryString);
		System.out.println("Context Path:"+contextPath);
		//请求:http://localhost:8080/K-Servlet/hello/http?name=kyle
	/*输出:
	URL:http://localhost:8080/K-Servlet/hello/http, URI:/K-Servlet/hello/http, queryStringname=kyle
	Context Path:/K-Servlet
	*/
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

获取请求头

获取请求头:

  1. long getDateHeader(String name)
  2. String getHeader(String name)  根据KEY获取到Value部分
  3. Enumeration getHeaderNames()  获取所有请求头的KEY部分,返回枚举器
  4. Enumeration getHeaders(String name)
  5. int getIntHeader(String name)
快速理解用法
import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(
		urlPatterns= {"/hello/myhttp"},
		name="ServletHTTP"
		)
public class ServletHTTP extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		Enumeration<String> enumeration = req.getHeaderNames();
		while(enumeration.hasMoreElements()) {
			String key = enumeration.nextElement();
			String value = req.getHeader(key);
			System.out.println("Key:"+key+"   Value:"+value);
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

//输入:http://localhost:8080/K-Servlet/hello/myhttp
/*输出:
Key:accept   Value:image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap,
Key:accept-language   Value:zh-CN
Key:ua-cpu   Value:AMD64
Key:accept-encoding   Value:gzip, deflate
Key:user-agent   Value:Mozilla/5.0 (Windows NT 6.2; Win64; x64; Trident/7.0; rv:11.0) like Gecko
Key:host   Value:localhost:8080
Key:connection   Value:Keep-Alive
Key:cookie   Value:JSESSIONID=0940865D7181B9F84546B2B7C01EEA61
*/

获得实体内容(客户端提交的数据)

获得实体内容(客户端提交的数据)

  1. String getParameter(String name):name表示参数名,获取“参数”中的实体数据,即从用户提交上来的数据;
  2. String[] getParameterValues(String name):获取“参数”中的多个数据,一般是获取多选按钮的值;
  3. Enumeration getParameterNames():获取所有用户提交上来的所有数据;
  4. Map<String,String[]> getParameterMap()

获取实体数据
JSP:
<!-- HelloServlet.jsp -->
<%@ page language="java" import="java.util.Enumeration" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>KYLE</title>
</head>
<body>
	<h2>Servlet获取实体域中的数据</h2>
	
	<form action="<%=request.getContextPath()%>/hello/myhttp" method="post">
		Username:<input type="text" name="username"><br/>
		Password:<input type="password" name="password"><br/>
		<input type="submit" value="提交"><br/>
	</form>
		
</body>
</html>

Servlet:
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(
		urlPatterns= {"/hello/myhttp"},
		name="ServletHTTP"
		)
public class ServletHTTP extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		Enumeration<String> enumer = req.getParameterNames();
		System.out.println("获取所有的参数:");
		while(enumer.hasMoreElements()) {
			String parameterName = enumer.nextElement(); //获取参数名
			String parameterValue = req.getParameter(parameterName); //获取参数值
			System.out.println("参数名:"+parameterName+"   值为:"+parameterValue);
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

//请求:http://localhost:8080/K-Servlet/HelloServlet.jsp
/*输出:
获取所有的参数:
参数名:username   值为:kyle
参数名:password   值为:kkkk
*/

HSRequest是一个域对象

特性:

  1. request对象也是一个域对象
  2. request域的作用范围是一次请求中

方法:

  1. setAttribute(String name, Object o)
  2. getAttribute(String name)
  3. removeAttribute(String name)

注:具体实例在以后实际开发中再做展示。

请求的包含&转发

  1. 在Web程序中,经常是由多个Servlet来完成请求,需要在Servlet之间来回跳转。
  2. RequestDispatcher接口就是为了实现在多个Servlet之间来回跳转而设计的。
  3. 该接口由HttpServletRequest类的getRequestDispatcher()方法获得
  4. 该接口提供两种跳转方式:include()和forward()
    1. include():可以在当前的Servlet中显示另外一个Servlet的内容。
    1. forward():跳转到其他的Servlet。

请求转发的两个步骤:

  1. 获得请求转发器:RequestDispatcher rd = request.getRequestDispatcher(String path):path是转发的地址,要转发给谁
  2. 通过转发器对象转发:rd.forward/include(ServletRequest request, ServletResponse response)

include()包含
1)	写两个Servlet
2)	配置web.xml(也可以直接使用注解实现)
3)	在浏览器输入URL,查看控制台

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	@Override
	public void doGet(HttpServletRequest request, HttpServletResponse response) {
		System.out.println("这是FirstServlet!");
	}
	
	@Override
	public void doPost(HttpServletRequest request, HttpServletResponse response) {
		doGet(request, response);
	}
}


import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SecondServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("这是SecondServlet!");
		RequestDispatcher rd = req.getRequestDispatcher("/first");
		rd.include(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

web.xml
	<servlet>
		<servlet-name>FirstServlet</servlet-name>
		<servlet-class>hello.FirstServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>FirstServlet</servlet-name>
		<url-pattern>/first</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>SecondServlet</servlet-name>
		<servlet-class>hello.SecondServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>SecondServlet</servlet-name>
		<url-pattern>/second</url-pattern>
	</servlet-mapping>

测试:
	先输入:http://localhost:8080/K-Servlet/first
	再输入:http://localhost:8080/K-Servlet/second
	结果如下图:

forward()请求转发
javax.servlet.RequestDispatcher rd = req.getRequestDispatcher("/first");
rd.forward(req, resp);

另外一种写法:
request.getRequestDispatcher("/test.jsp").forward(request, response);

Servlet的HTTP响应

HTTP响应对象:

javax.servlet.http.HttpServletResponse,主要功能是设置响应信息。

设置响应行

向浏览器设置响应行:

  1. void setStatus(int sc);  给当前响应设置状态码
  2. void setError(int sc); 使用指定状态码发送一个错误到客户端(例如请求的地址不存在)
    • 发送错误信息:response.sendError(HttpServletResponse.SC_NOT_FOUND, “你错了”);
    • 响应状态码的常量:SC_NOT_FOUND 404;SC_OK 200;SC_INTERNAL_SERVER_ERROR 500;

重定向

在请求转发中:

  • forward方法进行跳转后,浏览器中的地址依然还是老样子不变。
  • 所以可以继续使用原来的request和response,可以把数据存入Request域对象中。
  • 请求转发只发生在本个服务器的本个项目之中。

重定向(sendRedirect()方法)用于重定向到另外一个URL。可以重定向到任何地方。

   response.sendRedirect("https://blog.hackyle.net"); //任意URL

转发与重定向的区别:

1)重定向两次请求,转发一次请求

2)重定向地址栏的地址变化,转发地址不变

3)重新定向可以访问外部网站 转发只能访问内部资源

4)转发的性能要优于重定向

设置响应头

设置响应头:

  1. addHeader(String name, String value)
  2. addIntHeader(String name, int value)
  3. addDateHeader(String name, long date)

  • setHeader(String name, String value)
  • setDateHeader(String name, long date)
  • setIntHeader(String name, int value)
  • boolean containsheader(java.lang.String name)  判断是否含有该响应头
  • 注意:add系列的,如果遇到“name”重名的时候,value会自动叠加;set系列的,如果遇到“name”重名的时候,value会自动覆盖!

页面乱码

页面传输中文的乱码问题

  • 原因:response缓冲区的默认编码是iso8859-1,此码表中没有中文;发送给浏览器后浏览器后,无论浏览器采用什么编码方式来解析,都是解析不出来来真正的内容。
  • 解决方案:设置response的编码“setCharacterEncoding(String charset)”

如果发现客户端还是不能正常显示中文:

  • 原因:我们将response缓冲区的编码设置成UTF-8,但浏览器的默认编码是本地系 统的编码,因为我们都是中文系统,所以客户端浏览器的默认编码是GBK,我们可以 手动修改浏览器的编码是UTF-8。
  • 终极解决方案:在代码中指定浏览器解析页面的编码方式,通过response的setContentType(String type)方法指定页面解析时的编码是UTF-8:“response.setContentType("text/html;charset=UTF-8");”,不仅可以指定浏览器解析页面时的编码,同时也内含 setCharacterEncoding的功能;
  • 所以在实际开发中只要编写:response.setContentType("text/html;charset=UTF-8");就可以解决页面输出中文乱码问题。

设置响应体

向浏览器(客户端)发送响应体:

  1. ServletOutputStream getOutputStream()  向浏览器输出非文本,例如输出图片等内容。通过该字节流的write(byte[] bytes)可以向response缓冲区中写入字节,在由Tomcat服务器将字节内容组成Http响应返回给浏览器。
  2. java.io.PrintWriter getWriter()  响应体设置文本,向浏览器输入文本。获得字符流,通过字符流的write(String s)方法可以将字符串设置到response 缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览器端。

向浏览器输出文本

向浏览器输出文本:getOutputStream、getWriter实现
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//字符流实现
//		response.setContentType("text/html;charset=UTF-8");
//		PrintWriter pw = response.getWriter();
//		pw.write("傻逼,中文");
		
		//字节流实现
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		String str = "我爱你";
		byte[] byte_str = str.getBytes("UTF-8");
		OutputStream output = response.getOutputStream();
		output.write(byte_str);	}
}

向浏览器输出图片

向浏览器输出图片
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//显示图片
		ServletOutputStream outStream = response.getOutputStream(); //使用response获得字节输出流
		//获得服务器上的图片,图片组在WebContent目录下
		String realPath = this.getServletContext().getRealPath("aa.jpg");
		
		InputStream in = new FileInputStream(realPath);
		int len = 0;
		byte[] buffer  = new byte[1024];
		while((len=in.read(buffer))>0) {
			outStream.write(buffer,0,len);
		}
		in.close();
		outStream.close();
	}
}


通过观察我对目录的设定,可以发现本篇文章的结构就是:

  1. 牢牢把握请求和响应的三大组成部分
  2. 所有HTTP的应用都是在这三个组成部分里面进行

 

【Java Servlet 开发系列之二】创建WebApp详细步骤,通过Servlet实现http简单交互 本站文章均为 李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/java-servlet/853.html          ☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!创建一个webApp详细步骤如下:      1.   在我们的tomcat目录下的webapps 下创建一个自定义目录,作为我们 阅读详情

相关推荐

Servlet、HttpServlet 和 DispatcherServlet 区别与关系

所属包作用:是所有 Servlet 的根接口,定义了 Servlet 生命周期的基本方法。特点与协议无关(可以用于任何协议,如 HTTP、FTP 等)。是一个底层接口,通常我们不会直接实现它,而是继承其子类(如所属包作用:专门用于处理 HTTP 协议的抽象类,是Servlet的扩展。特点只处理 HTTP 请求(GET、POST、PUT、DELETE 等)。提供了doGet()doPost()等方法,开发者只需重写这些方法即可。所属框架作用。

h a 6 6 6 c k 为 你解决复杂难题! 904

javax.servlet.http.HttpServlet

来源:https://www.jianshu.com/p/4b7662016322 报错信息:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path JavaWeb: 报错信息The superclass "javax.servlet.http.HttpServlet" was n...

qq_37225760的博客 2193

Java Servlet开发:从基础到HTTP协议的实现

本文深入探讨了Java Servlet的开发,包括通过实现Servlet接口和继承HttpServlet类来创建Servlet。介绍了Servlet的生命周期,包括初始化、服务和销毁方法,并讲解了如何配置和部署Servlet。文章还详细说明了web.xml文件的作用及其在Servlet部署中的重要性,以及如何通过继承GenericServlet和HttpServlet类来实现不同的Web服务器协议。最后,概述了HTTP Servlet的特性和如何处理HTTP请求。

weixin_28746213的博客 334

HttpServlet详解

Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的的通用接口和类.在javax.servlet.http包中定义了采用HTTP通信协议的HttpServlet类. Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servl

1万+

Java实现HTTP1.1服务器与Servlet引擎指南

超文本传输协议(HTTP)是用于分布式、协作式和超媒体信息系统的应用层协议。HTTP1.1,作为该协议的一个版本,它在1.0版本的基础上带来了性能的显著提升,例如持续连接(Persistent Connections)和管线化请求(Pipelining)。这些特性减少了网络延迟,增加了吞吐量,是理解现代Web应用通信的基石。在计算机网络中,Socket是一种网络编程的方法。它允许应用程序之间的数据交换,是实现客户端/服务器通信的编程接口。

weixin_42629522的博客 1036

STM32F103 Stop模式低功耗实战:从唤醒配置到功耗调优

在嵌入式产品开发中,低功耗设计是电池供电设备的核心挑战之一。MCU的休眠模式通过关闭内核时钟与外设时钟,在保留必要数据的前提下大幅降低系统功耗,其中Stop模式凭借微秒级唤醒速度和断点续跑特性,成为兼顾响应速度与功耗平衡的关键方案。理解其省电原理、合理配置唤醒源(如EXTI外部中断或RTC闹钟)以及唤醒后的系统时钟恢复,是工程落地的重点。本文以STM32F103标准外设库为基础,梳理了进入Stop模式的完整代码链路,涵盖时钟配置、WFI指令使用、唤醒源初始化及唤醒后的时钟重建等关键环节,并提供了实测功耗数据

weixin_34174105的博客 351

报错:javax.servlet.http.HttpServlet

今天把eclipse的路径改了下,在重新新建jsp页面的时候报了以下javax.servlet.http.HttpServlet的错后来经过查度娘解决了,但是根本原因还是我自己有点小粗心忘记了细节,那么,接下来我给大家分享下这个bug的解决办法。 1、选中你新建的项目然后右击选中Build Path点击 2、选中Libraries中的Add Library' ...

Apollo 3570

从零搭建ROS1导航小车(一):松灵SCOUT Mini底盘通讯配置与ROS包编译避坑指南

本文详细介绍了从零开始搭建ROS1导航小车的初始步骤,重点讲解松灵SCOUT Mini底盘的通讯配置与ROS包编译避坑指南。内容包括硬件连接、CAN通讯配置、ROS工作空间构建及编译优化等实用技巧,帮助开发者快速实现自主导航小车的通讯功能。

weixin_27014595的博客 188

出现 javax.servlet.http.HttpServlet 错误的原因及解决方法

1 原因编译时错误:无法访问 javax.servlet.http.HttpServlet ; 未找到 javax.servlet.http.HttpServlet 的类文件。原因可能是环境变量没有配置,或者就是根本没有包含该类的jar包。2 解决方法(1)把 servlet-api.jar 的路径追加配置到 classpath 中; (2)从 tomcat 的 lib 目录下拷贝 servle

安正勋的博客 3万+

从原理到实践:详解双目散斑结构光的生成与优化

本文深入解析了双目散斑结构光的生成原理与优化实践,详细介绍了散斑结构光的抗干扰性、空间编码技术及其在三维视觉中的应用。通过对比不同生成方法和技术路线,提供了参数调优指南和工程实现细节,帮助开发者掌握高效、精准的散斑生成技术。

weixin_42521856的博客 591

affymatrix探针转换 | GPL5175探针对应的基因转换

一般情况下,有一些比较成熟的对应平台的注释数据集的R包。但是这个注释平台,我在Bioconductor上找了一圈都没有找到。只能通过最原始也最可靠的方法,从GEO数据集上去下载这部分的注释文件。以下展示全过程。 我要检查的数据平台是:GPL5157。 数据集的注释集链接为:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL5175 这个注释数据集比较难弄的地方在于,它的基因集注释的不太好。没有比较直接的可供提取的genesample的信息;在ge.

weixin_40640700的博客 7124

实现http接口的方式之一(servlet方式)

在平常开发项目中,总会遇到一些开发接口的工作,像http接口。webService接口等等,这些在工作中经常遇到。有的项目技术旧点,可能实现一个http接口就得通过servlet得方式,当然,像ssm,ssh等项目,直接可以使用springmvc的注解去实现http接口服务,今天,主要讲一下通过servlet和springmvc注解的方式实现http接口服务。 1:通过servlet方式实现http接口: 在web.xml中添加如下配置: <servlet> <se...

qq_36833673的博客 2647

Source Insight 4.0舒适黑主题 仿心情看的舒服就行

Source Insight 4.0主题 仿心情看的舒服就行 source insight自带的主题怎么看怎么别扭,于是在试用全网各种主题配色后,在其中一个基础上自定义了c/c++的语法配色 截全图有点糊 函数定义 全局变量 局部变量 枚举变量引用 全局变量引用及结构体成员 宏定义引用 ----------------------后面会再把主题文件贴上来-------------- ...

weixin_43443402的博客 1303

java开发http接口_实现http接口的方式之一(servlet方式)

在平常开发项目中,总会遇到一些开发接口的工作,像http接口、webService接口等等,这些在工作中经常遇到。实现一个http接口可以通过servlet的方式,可以使用springmvc的注解去实现http接口服务,今天,主要讲一下通过servlet的方式实现http接口服务。1:在web.xml中添加如下配置:DemoServletutil.httpUtil.DemoServletDemoS...

weixin_42310267的博客 2026

【实战指南】Green Hills MULTI-IDE 从零安装到工程创建全流程

本文详细介绍了Green Hills MULTI-IDE从零安装到工程创建的全流程,包括系统要求检查、安装步骤、工程配置及调试技巧。特别适合嵌入式开发新手快速上手这款专业IDE工具,提升开发效率。

weixin_28740299的博客 474

lammps模拟石墨烯吸附水分子(gcmc)

本文分享lammps gcmc吸附的一个案例代码,上下壁面的通道材料为石墨烯,吸附的分子为tip4p水分子。大家好,我是小马老师。

lammps_jiayou的博客 2590

基于TCP实现的HTTP服务器+Servlet容器

项目目录前言项目简介涉及知识预研HTTP协议TCP 协议与 Socket 套接字编程实现基本原理对于HTTP服务器对于Servlet容器整体工作流程整体流程框架初始化操作具体流程处理HTTP请求具体流程项目模块模块具体实现标准制定模块HTTP服务器模块动态资源模块重点部分详解类加载器加载Servlet类加载器cookie+session的设置整体流程分析源码项目的边界与总结 前言 本篇博客与大家分享的是个人实现的一个HTTP服务器+Servlet容器,其可以理解为极小级的 tomcat 内部功能涉及存储多个

相鱼南故 890

ardupilot开发 --- mavlink签名加密 篇

ardupilot开发 --- mavlink签名加密

记录老板的每次pua,分享领导每天的毒鸡汤... 1235

用 servlet实现http长连接

为了实现服务端向客户端推送的模式,如果自己写的socket到时顺理成章的很容易实现。但是,甲方要我们用标准的http协议。当然,自己写http服务器倒是也没什么题,我开始也时这么想的,而且都设计好了分布计算和负载平衡的方式。但有人暂时还建议我们用中间件,他们的意见就像天气的脸,一会儿这样,一会儿那样。于是在这方面考虑,无奈和喜悦同时而生。无奈的是,直接应用中间件,成就感将大打折扣。喜悦的是,直接应

maguanghui_2012的专栏 5016

国科大学习资料--数据挖掘(刘莹)--第三章习题及参考答案

国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 第 3 章分类与回归 3.1简述决策树分类的主要步骤。 答:决策树生成的过程如下: (1)对数据源进行数据预处理, 得到训练集和测试集; (2)对训练集进行训练; (3)对初始决策树进行树剪枝; (4)由所得到的决策树提取分类规则; (5)使用测试数据集进行预测,评估决策树模型; 3.2给定决策树,选项有:(1)将决策树转换成规则,然后对结果

无名何许人的博客 3090

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

关于Tomcat、HTTP协议、Servlet实现的总结

Tomcat: Tomcat 是一个符合 JavaEE WEB 标准的最小的 WEB 容器,所有的 JSP 程序一定要有 WEB 容器的支持才能运行,而且在给定的 WEB 容器里面都会支持事务处理操作。Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。 对于一个初学者来说...

PussyCatsss的博客 435

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java实现简单HTTP服务器+Servlet容器(缩减版)

Java实现简单HTTP服务器(缩减版)0. 项目展示1. 项目简介2. 项目前置知识2.1 Http协议2.2 TCP协议2.3 Socket编程2.4 Java-IO2.5 Tomcat 相关2.6 servlet 相关3. 项目总体设计4. 项目详细设计4.1 com.zxf.standard 内容设计4.2 com.zxf.webapps 内容设计4.3 com.zxf.tomcat 内容设计 (重点设计)4.3.1 initServer() 方法设计4.3.2 startServer() 方法设计

Madrid-7的博客 788

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java Socket 简单实现http服务器 仿Servlet

基于java Scoket的TCP协议 简单实现http服务器,用浏览器当作客户端,达到javaWeb中类似于访问Servlet的效果。 (对http协议和Servlet要有一定了解) 执行效果: http服务器端: 客户端 (login.html): 登陆后: 测试账号:zjl 123456 执行过程 浏览器端:是一个html的表单,输入姓名密码后点击登...

BurukeYou 1956

servlet实现http通信基础

1.客户端发送http报文    http协议是建立在TCP/UDP协议之上,封装了socket通信(TCP/UDP需要使用)的细节。即客户端通过实现了TCP或者UDP socket通信的http客户端发送http消息给servlet。   图片:暂时不支持 2.servlet处理报文 httpservlet启动了SocketServer public void init(Se...

weixin_34010949的博客 142

用java的servlet实现http访问mongodb中的文件

这个程序只是为了编码时方便调试用;如果正式服务器运营,建议使用nginx访问mongodb数据库。 一个java的servlet文件(FileCtrl .java):  import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import com.mongodb.gridfs.GridFSDBFile; import

2081
上一篇: 【Servlet】HTTP协议的简单理解
下一篇: 【Servlet】会话管理基础
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值