学好Servlet必须紧紧围绕着请求和响应这两个概念。
前面文章写的Servlet三种创建方式的代码只是进行请求,然后再响应到客户端。请求的时候没有带数据给Servlet。
下面开始写在请求的时候前端带数据到servlet里面,我们servlet要接收前端给我们的这个数据。
首先先创建一个login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="login" method="post">
<%-- <form action="redirect" method="post">--%>
<input type="text" name="username">
<input type="text" name="password">
<button type="submit">提交</button>
</form>
</body>
</html>
创建Servlet实例loginServlet
public class loginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//html页面中 input标签发送的数据,都会存到HttpServlet这个对象里面
//通过前端input标签name的属性值获取前端发送的数据
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username: " + username+"===password"+password);
response.getWriter().write("username: " + user+"===password"+password);
}
}
web.xml配置文件
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.by.servlet.loginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
完成上面的步骤后我们打开tomcat进行运行,按照图中的步骤输入对应的值后,页面进行跳转,并在新的页面得到我们刚刚输入的两个值,这时我们发现我们输入的中文汉字乱码了,到这里我们已经成功的获取了前端传递的数据,接下来我们解决中文乱码的问题。
中文乱码问题解决方案
请求时候的乱码问题:
//前端发送数据到Servlet,如果是post请求的话,input输入中文数据的时候,Servlet接到的数据是乱码的。
request.setCharacterEncoding("utf-8");
响应时候中文乱码的问题:
//Servlet响应数据到客户端的时候,如果是中文的话,会乱码
response.setContentType("text/html;charset=utf-8");
我们只需将上面代码添加到我们的loginservlet.java文件中去,就可以解决这个问题
public class loginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
//Servlet响应数据到客户端的时候,如果是中文的话,会乱码
resp.setContentType("text/html;charset=utf-8");
String username=req.getParameter("username");
String password=req.getParameter("password");
resp.getWriter().write("username:"+username+"password:"+password);
}
}
重启tomcat
到这里我们的中文乱码问题就解决啦!!!