3_32江_0402—doGet与doPost函数的基本使用
引言
首先,通过上节课的学习,我们知道了如何进行servlet的映射操作,现在我们进行基础框架的演示,围绕doGet与doPost函数进行演示:
1、doGet函数
为了方便学习,首先要理解这个函数如何运作,我们知道函数中包含变量对象Response,当我们客户端向服务器提出请求,我们的请求信息就会在这个变量中存储,例如用户登录输入账号密码,再通过showMsg函数去完成操作,给出代码如下:
package cn.edu.mju.project13.controller;
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("/Login")
public class LoginController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<form action='' method='post'>");
stringBuilder.append("登录名称:<input type='text' name='LoginName' value=''><br>");
stringBuilder.append("登录密码:<input type='password' name='LoginPwd' value=''><br>");
stringBuilder.append("<input type='reset' name='reset' value='取消'>");
stringBuilder.append("<input type='submit' name='submit' value='登录'>");
stringBuilder.append("</form>");
showMsg(resp, stringBuilder.toString());
}
private void showMsg(HttpServletResponse resp,String msg)throws IOException{
resp.setCharacterEncoding("UTF-8");
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<html>");
stringBuilder.append("<header>");
stringBuilder.append("<title>text</title>");
stringBuilder.append("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">");
stringBuilder.append("<body>");
stringBuilder.append(msg);
stringBuilder.append("</body>");
stringBuilder.append("</html>");
PrintWriter out=resp.getWriter();
out.println(stringBuilder.toString());
out.close();
}
}
2、doPost函数
客户端向服务端提出了请求,你们服务端就要通过doPost函数去做回应,因此会有一个Request变量对象去存储相关信息,我们以上面为例,接收前面输入的LoginName与LoginPwd,进行简单的判断语句假设只有35用户通过密码1234才可以完成登录,代码如下:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String LoginName = req.getParameter("LoginName");
String LoginPwd = req.getParameter("LoginPwd");
String msg;
if (LoginName.equals("35")&& LoginPwd.equals("1234"))
{
msg = "你好" + LoginName;
} else{
msg="账号或者密码错误";
}
showMsg(resp,msg);
}
3、验证
现在我们进行验证成果,假设现在我们的patch=/Project13(上下文),端口为8081,映射为/Login,我们进行localhost(本机地址127.0.0.1)运行代码使用HTTP超文本传输协议访问页面,进入登录页面,发布输入正确与错误账号密码进行验证如下图:
1.进入登录界面
2.输入错误账号密码
3.提示错误
4.输入正确账号密码
5.登陆成功
总结
本次操作有几个 注意点,首先是 HTML标签 的特性一定要有一定的了解,他们的包含关系等等,不注意可能会发生错误,接着是了解 客户端与服务器的获取信息流程 ,以及 变量代表的角色有什么含义,如果有代码运行不了的情况优先选择将项目文件列表的 .idea文件夹删除,进行 rebuild 操作,排除原因考虑 jdk 的设置是否产生冲突,特别是项目文件使用idea自带的jdk时,idea的版本又进行更好,极有可能发生不兼容,导致无法正常运行程序。