javaServlet的get和post请求

6 篇文章 1 订阅

1、 Servlet在javaWeb中的作用

Java sevlet是运行在 Web 服务器或应用服务器上的程序,它是作为来自Web浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

若是还不明白,可以将Servlet代替成contoller

Servlet规范介绍:
- servlet规范来自于JAVAEE规范中的一种

* 作用:
    1: 在Servlet规范中,指定【动态资源文件】开发步骤
    2: 在Servlet规范中,指定Http服务器调用动态资源文件规则
    3: 在Servelt规范中,指定Http服务器管理动态资源文件实例对象规则    
        - 例: Object newObj = new Object();

2、 Get请求和post请求

浏览器需要和服务端进行交互,而交互就需要用到get或者post请求,但如何运用get和post请求?
这时在浏览器和服务端进行信息交互时,会出现http请求协议包和http响应协议包

  1. http请求协议包
    它作用于浏览器向服务端发送请求时产生的容器,此容器中包括
    请求行:在发送请求时,请求行会归类该请求的相关信息(url、method)
    url:请求地址
    method:请求方式
    请求头:cookie、请求参数【GET】
    空白行:包含其他数据
    请求体:请求参数【POST】
    等于说,在浏览器发起请求后,服务端Servlet接收到的东西其实就是Http请求协议包,我们可以根据这个协议包来获得该请求在协议包中的信息。
    Get和Post请求,在协议包中分别将数据存储于请求头和请求体中

  2. http响应协议包
    与请求协议包一样,也可以看作是一种容器,只不过这个容器是服务端向浏览器发起的一个返回信息
    此容器中包括:
    状态行:包含的是该针对某一请求的状态信息(码)
    响应头:Cookie、Content-Type:编译器
    (content-Type可以说是指定返回信息至浏览器的一种编译方式,在Servlet中可以进行更改)
    空白行:
    响应体:向浏览器返回 文件内容/文件命令 但这些信息内容都是以【二进制】的方式发送

  3. Servlet在服务端中如何处理请求?
    Servlet在服务端中可以看作是一个java类,但它几乎不用main这个主函数,通常使用都是doGet或者doPost这两个方法

这两个方式,都会有对应的请求对象和响应对象,在浏览器选择好对应servlet的路径,浏览器的请求就会发送至对应路径的Servlet中,Servlet会区分浏览器的请求方式是get还是post,如果是get,那么Servlet执行的方式是doGet,post请求则反之。

在请求送至Servlet中的doGet或doPost方法中后,就可以从请求对象中获得请求协议包中的数据,同时,也可以设置将doGet方法完成后发向浏览器的响应对象。

这里不得不提的是,在java中,包含了请求转发等一系列与浏览器相关的操作,这些操作就可以保证java的多态化。

3、 传输过程中的异常情况

在请求和响应的传输过程中,如果传输依赖网络,那么不得不考虑的是网络波动和网络地址问题,这些明显的因素会有导致内容传输不全的可能,如果传输内容跟不全,服务端很可能就会包各种bug,也就是“刚刚运行没问题!但是这下哪蹦出来一个BUG?”的情况。

如果Servlet没有接收到和浏览器传输过来的内容或者内容错误请确认浏览器的缓存是否影响了传输过程或者在浏览器端发送请求的地址是否配对正确。

4、 总结

在javaWeb的开发中,请求这概念一定要弄清楚,像浏览器如何发送一个请求,又如何生成一个请求,发送请求中如何传输,这些都很关键也很重要。

如果还不是很明白,那么可以想象一个这样的场景,一条河,两端各有一人,一条绳子贯穿河流,两人只能通过绳子传输物品,或者说传递纸条进行对话。
在这里,河就意味着浏览器和服务端之间的距离。两端的人一个是浏览器,一个则是服务端。绳子代表得是请求的路径。浏览器和服务端要是想通话那么只能够通过这条绳子进行沟通。
同时,传输过程中的异常,在两端的人和绳子这三者中指定有一个出现了问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,如果你想在Java中只允许GET和POST请求,你可以使用Java Servlet API提供的过滤器(Filter)来实现。 你可以在web.xml文件中配置一个过滤器,用于拦截所有的HTTP请求,然后检查请求方式是否为GET或POST,如果不是则拒绝该请求。 下面是一个示例代码,你可以将其添加到web.xml文件中: ``` <filter> <filter-name>requestFilter</filter-name> <filter-class>com.example.RequestFilter</filter-class> </filter> <filter-mapping> <filter-name>requestFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 上面的代码中,我们定义了一个名为requestFilter的过滤器,它的过滤器类为com.example.RequestFilter。然后,我们将该过滤器映射到所有的HTTP请求中。 接下来,我们需要创建一个RequestFilter类,用于检查HTTP请求的方式,只允许GET和POST请求。下面是一个示例代码: ``` public class RequestFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化操作 } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; String method = httpRequest.getMethod(); if (!method.equalsIgnoreCase("GET") && !method.equalsIgnoreCase("POST")) { HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); } else { chain.doFilter(request, response); } } @Override public void destroy() { // 销毁操作 } } ``` 上面的代码中,我们实现了javax.servlet.Filter接口,并重写了其中的init、doFilter和destroy方法。在doFilter方法中,我们首先获取HTTP请求的方式,然后判断该方式是否为GET或POST,如果不是则返回“405 Method Not Allowed”错误码,否则继续执行后续操作。 通过以上的配置和代码,我们就可以在Java中只允许GET和POST请求了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值