Java web第十天--servlet和表单应用(简单理解doget和dopost)(解决中文乱码)

表单

form表单的两种提交方式,get和post方法的区别。 默认是get方式
1、 GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是unicode,即是说所有的非ASCII字符都要编码之后再传输。在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求 时,传输数据会受到URL长度的限制。

2、POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。 对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制。GET方式传递数据量少,POST方式相对而言传递的数据量大。
在这里插入图片描述
在这里插入图片描述
代码
1、html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单</title>
</head>
<body>
    <form action="servlet" method="post">           <!-- action是路径,../servlet是回到上一级目录的-->
        请输入:<input type="text" name="info">
        <input type="submit" value="提交">
    </form>

</body>
</html>

2、servlet代码

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "Servlet")
public class Servlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8"); //1
        response.setContentType("text/html;charset=utf-8"); //2
        response.setCharacterEncoding("utf-8"); //3

        String info = request.getParameter("info");
        PrintWriter out = response.getWriter();
        out.println("<html><head><title>接收表单输入</title></head>");
        out.println("<body><h1>"+info+"</h1></body></html>");
        out.close();

    }
}

中文乱码问题

1、如何解决服务器返回页面中文乱码问题
response.setContentType(“text/html;charset=UTF-8”);

2、解决post方式请求表单参数中文乱码问题

request.setCharacterEncoding(“UTF-8”);//注意此语句一定要设置在取参数的语句之前

3、解决get方式请求中文参数乱码问题
修改server.xml

<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000"
  redirectPort="8443" URIEncoding="UTF-8"/>

4、总的方法,已实验-简单方便,加上去就行了

request.setCharacterEncoding("utf-8"); //1
response.setContentType("text/html;charset=utf-8"); //2
response.setCharacterEncoding("utf-8"); //3

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值