表单
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