5.1劳动节,学校就放假两天,哪儿也去不了,就只有待在学校里学J2EE(真就“劳动节”)
这次peter xiao进行第9个war包的学习记录。首先我们还是先看说明文档,了解本次实验的内容。
自行完成相应的动作和思考
0.读完程序中的文档,即注释,如果有相关问题,则直接回答问题。进行一个最简单的用户登录的模拟
1 界面如何组织参数输入
2 参数如何传到服务器上进行相应的处理
3 一个servlet从接请求到给响应要做些什么事情?
4自己要慢慢熟悉在前端用html里的form的方式向后台提交数据,提交请求
看的出来,这一次是要设计一个简单的用户登录页面,需要从前端以form表单的形式提交数据和请求,然后用servlet接请求和响应。
我们先看html文件。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
建议用f12看一下整个请求到响应的过程<br>
<form action="login">
用户名:<input type="text" name="username"> <br>
密 码:<input type="password" name="password"> <br>
<input type="submit" value="登录">
</form>
</body>
</html>
我们着重看这个部分
<form action="login">
用户名:<input type="text" name="username"> <br>
密 码:<input type="password" name="password"> <br>
<input type="submit" value="登录">
</form>
以上代码说明这个文件有两个输入字段(用户名输入和密码输入)以及一个提交按钮。值得一提的是,这里密码输入的属性值是password,说明定义的是密码字段,该字段中的字符被掩码(对于之后的登录界面都会这么设计)。最后通过表单提交按钮submit将数据提交到服务器中。
之后我们查看servlet。
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//从请求中获取相应的参数
String username = request.getParameter("username");
String password = request.getParameter("password");
// 思考,在真实的项目中,接收到参数后要做什么动作?
// 真实的业务操作可能会有哪些动作呢?
//在控制台输出相应的参数
System.out.println("username = " + username );
System.out.println("password = " + password );
//给出响应
response.setContentType("text/html");
response.getWriter().println("Login Success!");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
从上述代码中可以看出,通过调用request.getparameter()方法来从请求中获取相应的参数,并且通过容器的实现来取得通过get或者post方式提交过来的数据。而用该方法传递的数据会从web客户端传到web服务器端,代表http请求数据,该方法最终返回String类型的数据。在获得数据后,通过调用response.setContentType()方法来区分数据类型,调用浏览器内嵌模块来对数据进行处理。
接下来我们来看具体的运行结果,并且通过f12键打开网页开发者工具,查看请求发出过程。
1.运行login.html文件,弹出前端登录页面。
2.输入用户名和密码,提交登录按钮,显示登录成功。
3.打开开发者工具(F12键),查看请求响应过程。
发现URL完整地显示了出来,与此同时账号和密码也全部显示出来了,同时可以看到下面是使用的get请求方法,这也是参数URL显示出来的原因。而使用post方式则可以解决隐私性差的问题。
最后我们来对思考题进行一个解答。在真实的项目中,接受到参数之后需要对账号和密码数据进行判断是否正确,然后再放行;对于一个servlet从请求到响应的过程总体来说是加载——初始化——提供服务——销毁过程。在servlet处理请求时,首先web服务器会接受请求传给Tomcat,Tomcat根据请求及配置文件判断servlet是否存在,再判断其是否实例化,最后调用实例对象的service()方法,并开启一个新的线程去执行相关处理。
第9个war包学习结束,我们下一个war包见!bye~~~