浅谈HttpServlet之重写doGet、doPost

200表示请求响应成功,正常结束。
404表示访问资源不存在。
405表示前端发送的请求方式与后端请求的处理方式不一致。
500表示服务器端的程序出现异常。

Servlet(接口)- GenericServlet implements Servlet(抽象类) - HttpServlet extends GenericServlet(抽象类)

HttpServletRequest对象,封装了请求协议的全部内容。
HttpServletResponse对象,专门响应HTTP协议到浏览器的。

Servlet生命周期

第一次请求
Tomcat服务器通过反射机制,创建Servlet对象。
Tomcat服务器调用Servlet对象的init方法。
Tomcat服务器调用Servlet对象的Service方法处理请求。
第…次请求
Tomcat服务器调用Servlet对象的Service方法处理请求
Tomcat服务器关闭
Tomcat服务器调用Servlet对象的destroy方法,做销毁之前的准备工作。
Tomcat服务器销毁Servlet对象

重写doGet和doPost

若HttpServlet方法中没有init方法,会继续执行GenericServlet类中的init方法。
若HttpServlet方法中没有service方法,会继续执行GenericServlet类中的service方法。

//request.getMethod()方法获取的是请求方式。可能是其中之一:GET POST PUT DELETE HEAD OPTINS TRACE

405错误表示前端发送的请求方式与后端请求的处理方式不一致。
重写HttpServlet的service方法,web页面享受不到405服务。

Web.Xml配置

<servlet>
    <servlet-name>HtServlect</servlet-name>
    <servlet-class>com.javaweb.Servlect.HtServlect</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HtServlect</servlet-name>
    <url-pattern>/Ht</url-pattern>
</servlet-mapping>
Index.html配置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>get请求</h1>
<a href="/JavawebServlect/Ht">get请求</a>
<h1>Post 请求</h1>
    <form action="/JavawebServlect/Ht" method="post">
      username<input type="text" name="username"><br>
      <input type="submit" value="login">
    </form>
</body>
</html>

GET和POST的区别

POST请求:在使用<form>表单,并且使用from标签的时候 method="post"。其他请求都是get请求。
Get请求发送数据的时候,数据会挂在URI的后面,并且URI后面有?,?后面是数据。这样会导致发送的数据回显在浏览器的地址栏上。
Post请求发送数据的时候,在请求体中发送。不会显示到地址栏上。
Get请求和Post请求,发送的请求数据格式是完全相同的。位置不同,格式都是统一的。

Get请求无法发送大数据量,只能发送普通字符,发送的字符串长度有限制,不同的浏览器限制不同。
Post请求可以发送任何类型的数据,没有长度限制。
GET请求,适合从数据端获取数据。
POST请求,比较适合向服务器端传送数据。(修改服务器端的资源)
Get请求是绝对安全的。Get请求只是为了从服务器获取数据
Post请求是危险的。Post请求是向服务器提交数据,如果这些数据从后门的方式进入到服务器当中,服务器很危险。

缓存
Get请求支持缓存。
Post请求不支持缓存。
发送Get请求,浏览器先从本地浏览器缓存中寻找资源,当找不到时向服务器请求资源。
如:文件上传POST请求

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 重写doGet()和doPost()方法是指在Servlet中重新定义这两个方法,以便在处理HTTP GET和POST请求时执行自定义的逻辑。这些方法是Servlet API中的两个核心方法,用于处理客户端请求和响应。在重写这些方法时,需要注意请求和响应对象的使用,以及如何处理异常和错误情况。同时,还需要根据具体的业务需求,编写相应的逻辑代码,以实现所需的功能。 ### 回答2: 重写doGet()和doPost()方法是在编写Java Servlet时常常需要做的任务。这两个方法是Servlet的核心方法,用于处理HTTP请求。 在重写doGet()方法时,我们需要在方法体内编写处理GET请求的代码。首先,我们可以使用HttpServletRequest对象的方法来获取请求的参数、头信息等。接下来,可以通过HttpServletResponse对象来设置响应的状态码、响应头等。最后,我们可以通过HttpServletResponse对象的输出流将响应内容发送给客户端。 在重写doPost()方法时,我们需要在方法体内编写处理POST请求的代码。与doGet()方法类似,我们可以通过HttpServletRequest对象来获取请求的参数、头信息等。不同之处在于,POST请求通常用于传输大量数据,因此我们可以通过HttpServletRequest对象的getReader()方法获取请求体的内容。接下来,可以通过HttpServletResponse对象来设置响应的状态码、响应头等。最后,同样可以通过HttpServletResponse对象的输出流将响应内容发送给客户端。 在重写这两个方法时,我们需要根据具体的业务需求来编写相应的逻辑代码。例如,我们可以根据不同的请求参数来返回不同的响应内容,或者对请求进行验证、处理并返回相应结果。 总之,重写doGet()和doPost()方法是在编写Java Servlet时的基本任务,通过重写这两个方法我们可以处理不同类型的HTTP请求并返回相应的响应结果。 ### 回答3: doGet()和doPost()方法是Java Servlet中用于处理HTTP GET和POST请求的两个核心方法。 doGet()方法用于处理来自客户端的GET请求。在这个方法中,可以通过request对象获取客户端发送的数据,并通过response对象向客户端返回响应结果。具体的操作逻辑可以根据业务需求进行编写,例如查询数据库、调用其他方法等。 示例代码如下: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取客户端发送的参数 String param1 = request.getParameter("param1"); String param2 = request.getParameter("param2"); // 执行业务逻辑 String result = processRequest(param1, param2); // 设置响应内容类型为text/plain response.setContentType("text/plain"); // 获取响应输出流 PrintWriter out = response.getWriter(); // 将结果写入响应中 out.println(result); // 关闭输出流 out.close(); } ``` doPost()方法用于处理来自客户端的POST请求。与doGet()方法类似,也可以通过request对象获取客户端发送的数据,并通过response对象向客户端返回响应结果。不同之处在于,POST请求的参数通常包含在请求体中,所以可能需要使用其他方式来获取参数。 示例代码如下: ```java protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置请求字符编码为UTF-8 request.setCharacterEncoding("UTF-8"); // 获取客户端发送的参数 String param1 = request.getParameter("param1"); String param2 = request.getParameter("param2"); // 执行业务逻辑 String result = processRequest(param1, param2); // 设置响应内容类型为text/plain response.setContentType("text/plain"); // 获取响应输出流 PrintWriter out = response.getWriter(); // 将结果写入响应中 out.println(result); // 关闭输出流 out.close(); } ``` 以上是一个简单的示例,实际使用时可以根据具体需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QGS-CD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值