Servlet再探-获取参数、返回响应、调用流程

1. 创建login.html

在web上右键 -> New ->File  创建一个 login.html文件

添加一个form元素

  • action="login" 标题会提交到login路径,login路径在后续步骤会映射到LoginServlet
  • method="post" post方式表示提交的密码信息在浏览器地址栏看不到

接着准备账号和密码的input元素,因为要提交两个数据,在servlet端为了区分哪个是账号,哪个是密码,要给这两个input元素的name属性分别叫做name和password。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
 
<form action="login" method="post">
账号: <input type="text" name="name"> <br>
密码: <input type="password" name="password"> <br>
<input type="submit" value="登录">
</form>
 
</body>
</html>

2. 创建LoginServlet

创建一个LoginServlet,因为浏览器中的form的method是post,所以LoginServlet需要提供一个doPost方法。在doPost方法中,通过request.getParameter 根据name对应的账号和密码,然后用System.out.println()打印在控制台。

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 doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
		String name = request.getParameter("name");
		String password = request.getParameter("password");
		
		System.out.println("name:"+name);
		System.out.println("password:"+password);
	}

}

3. 映射LoginServlet到路径login

在web.xml中新增映射

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
	<servlet>
		<servlet-name>HelloServlet</servlet-name>
		<servlet-class>HelloServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>HelloServlet</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>LoginServlet</servlet-name>
		<servlet-class>LoginServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>LoginServlet</servlet-name>
		<url-pattern>/login</url-pattern>
	</servlet-mapping>
</web-app>

6. 在页面提交数据

首先重启tomcat,然后访问页面

http://127.0.0.1/j2ee/login.html

输入账号和密码,提交。

然后在Tomcat窗口,就可以看到提交的账号和密码了!!!

返回响应

1. LoginServlet

判断账号密码是否为admin 123,如果是就打印:success,否则打印:fail

根据账号密码,创建对应的html字符串,然后通过response.getWrite().println()发送到浏览器。

import java.io.IOException;
import java.io.PrintWriter;

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 doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
		String name = request.getParameter("name");
		String password = request.getParameter("password");
		String html = null;
		if("admin".equals(name) && "123".equals(password)) {
			html = "<div style='color:green'>success</div>";
		}else {
			html = "<div style='color:red'>fail</div>";
		}
		PrintWriter pw = response.getWriter();
		pw.println(html);
	}

}

2. 重启tomcat,提交数据

http://127.0.0.1/j2ee/login.html

输入账号:admin

密码:123

提交,可以看到success

调用流程

1. 流程图

流程图

2. login.html

访问http://127.0.0.1/j2ee/login.html

打开一个静态的html页面,在这个页面中可以通过form,以post的形式提交数据。

3. /login路径

在上一步的login.html中,用form,把账号和密码,提交到/login这个路径,并且附带method="post"

4. 找到对应的Servlet

tomcat接收到一个新的请求:http://127.0.0.1/login

其路径是/login,接着就到配置文件web.xml进行匹配,发现/login,对应的Servlet类是LoginServlet。

接下来的工作,就会基于这个LoginServlet进行。 

5. 实例化Servlet对象

Tomcat定位到了LoginServlet后,发现并没有LoginServlet的实例存在,于是就调用LoginServlet的public无参的构造方法LoginServlet()实例化一个LoginServlet对象以备后续使用。

6. 调用doGet或者doPost

Tomcat从上一步拿到了LoginServlet的实例之后,根据页面login.html提价信息的时候带的method="post",去调用对应的doPost方法。

7. request获取参数

接着流程进入了doPost方法中,在这个方法中,通过参数request,把页面上传递来的账号和密码信息取出来。

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
		String name = request.getParameter("name");
		String password = request.getParameter("password");
	}

8. response设置响应

接着,根据账号和密码是否正确(判断是否是admin和123),创建不同的html字符串。然后把html字符串通过如下方式,设置在了response对象上。

PrintWriter pw = response.getWriter();
pw.println(html);

到这里,Servlet的工作就做完了。

9. tomcat把html传递给浏览器

在Servlet完成工作之后,tomcat拿到被Servlet修改过的response,根据这个response生成html字符串,然后再通过HTTP协议,这个html字符串,回发给浏览器,浏览器再根据HTTP协议获取这个html字符串,并渲染在界面上。

这样在效果上,浏览器就可以看到Servlet中生成的字符串了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值