Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)

接上一篇,上一篇里面成功运行了一个简单的servlet,可以在浏览器输入账号密码,然后servlet里面解析。

而这一篇,是对某些问题进行补充。

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第1张图片

一、字符编码问题

我们在测试上一篇的login.html页面提交数据的时候,发现输入数字和英文可以正常打印在控制台,BUT 输入中文的话就不行了,全变成:

那么怎么在servlet里处理下中文,让他正常打印呢?

我们可以看到login.html里指定的编码格式为UTF-8,(意思是客户端发送消息给服务器的时候编码格式为UTF-8)

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第2张图片

那么servlet里怎么解码utf-8格式?

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第3张图片

先用ISO-8859-1解码,然后再编码成UTF-8。

再尝试下,就可以正常显示:

当然,response里面返回到浏览器的数据是中文的话,也可以修改编码格式为UTF-8后再进行传输:

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第4张图片

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第5张图片

 

二、一个servlet的生命周期

就像一个人一样,从出生,上学,工作,死亡,入土一样,

servlet的周期就是: 实例化初始化提供服务销毁被回收

1、实例化

当某用户输入提交信息 后,访问路径对应的servlet会实例化。而且只会实例化一次(单实例),无论用户访问多少次~

验证的话,可以在LoginServlet类里写一个构造方法,可以发现发起请求的时候,会首先调用这个方法实例化对象

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第6张图片

2、初始化

因为Loginservlet继承了HttpServlet,于是乎init初始化方法也被继承。

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第7张图片

可以看到init在构造方法后执行。

3、提供服务

服务就是之前写的 doGet ,doPost,service 等,对收到请求的一些处理。

4、销毁

destroy()

当有如下情况时,会销毁一个servlet:

(1)关闭tomcat时:

	public void destory(ServletConfig config) {
		 System.out.println("destory方法!!");
	}

原谅我手太残,太快了,没截到图。。

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第8张图片

(2)该Servlet所在的web应用重新启动;

之前在tomcat的server.xml里配置了:



reloadable 代表是否自动重启,就是当检测到服务有更新,即tomcat自动重启,当重启的时候就会destory 。

 

5、回收

这个就涉及到垃圾回收了,当该Servlet被销毁后,就满足垃圾回收的条件了。 当下一次垃圾回收GC来临的时候,就有可能被回收。

关于垃圾回收机制,大概原理在之前的博客也记录了~

 

三、跳转页面

目前,浏览器提交信息后,会跳转到http://127.0.0.1:8080/login 这个地址。

这里跳转页面分为 服务端调转 和 客户端跳转

首先web目录下创建2个html

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第9张图片Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第10张图片Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第11张图片

1、服务端跳转

	//判断账号密码合法性
	 if ("admin".equals(name) && "123456".equals(password)) {
         request.getRequestDispatcher("success.html").forward(request, response);
     }
	 else {
		 request.getRequestDispatcher("fail.html").forward(request, response); 
	 }

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第12张图片Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第13张图片

(注意:跳转的地址都是http://127.0.0.1:8080/login  ,和原来是一样的 )

2、客户端跳转

	//判断账号密码合法性
	 if ("admin".equals(name) && "123".equals(password)) {
		 response.sendRedirect("success.html");
     }
	 else {
		 response.sendRedirect("fail.html");
	 }

结果: 发现跳转后地址发生变化

Java如何用Servlet写一个接口,部署在tomcat,通过url进行访问 —— (二)_第14张图片

 

 

你可能感兴趣的:(Java)