Servlet的doGet()和doPost()区别

doGet() 会在url后面显示字符串 比如 http://localhost:8080/test?username=zhangsan&password=lisi.
这样非常的不安全。而doPost()不会。
而且get方法的好处是提交的页面能够通过history.back()。但post的数据就不能,回退时告诉已经过期,
相对来说。goGet()比 doPost传输的数据量要小。
一般情况来说。处理FROM表单用DOPOST 而处理AHREF则用DOGET 至于使用什么方法。可以在页面设置method。
应用的时候也可以采用嵌套的方法。下面给出ex:

Servlet:test.java
package cn.com.leadfar;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

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

public class test extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
			String username =req.getParameter("username");
			String password =req.getParameter("password");
			System.out.println(username);
			System.out.println(password);
			
			resp.setCharacterEncoding("utf8");
			resp.setContentType("text/html");
			resp.getWriter().println("登录成功");
			
			
	}

	@Override
	/** 下面是使用嵌套方法
	 * 
	 */
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		this.doGet(req, resp);
	}
	

}

index.jsp
<body>
  						<!--在这里设置method方法。是doGet()还是doPost()  -->
    <form action="test" method="post">
    	用户名:<input type="text" name="username"><br>
    	密码:<input type="password" name="password"><br>
    	<input type="submit" value="login">
    
    
    </form>
  </body>

另外。如果有doGet()方法在控制台输出是乱码的情况下。改下tomcat/bin目录下的service.xml 然后ctrl+f 找到你当前的端口。比如8080.然后在 8443后面加上URLEncoding="UTF-8" 就可以解决


你可能感兴趣的:(java,tomcat,jsp,xml,servlet)