1.什么是servlet?
servlet本身就是一种Java类,这种Java类提供了web形式的方法(JavaEE规范中),只要实现了servlet接口的类,都是一种servlet资源
2.为什么使用servlet
HTML只能用来保存静态内容,而通常情况下,静态页面很难满足实际应用的需要,鉴于此,动态页面的概念被引入。所谓动态页面,指的是能够根据不同时间、不同用户而显示不同内容的页面,例如常见的论坛、留言板、电子商务网站等都是通过动态页面来实现的。
Servlet是采用Java语言编写的服务器端程序,它运行于Web服务器中的Servlet容器中,其主要功能是提供请求/响应的Web服务模式,可以生成动态的Web内容,而这正是HTML所不具备的功能。
与其他生成动态页面的技术相比,Servlet有诸多优点,具体而言,主要表现在如下几个方面:
1.较好的可移植性
由于Java语言具有跨平台和可移植性强的特点,使得Servlet也有较好的可移植性,即无需修改代码就可以部署到多种不同类型的Web服务器上。
2.执行效率高
由于CGI针对每个请求都会创建一个进程来处理,而Servlet针对每个请求创建一个线程来执行,而创建线程比创建进程的开销要小,因此与CGI相比,Servlet在交互过程中有更短的响应时间,响应效率更高。
3.功能强大
Servlet可以与Web服务器进行交互,而CGI却无法与Web服务器直接交互。
4.使用方便
Servlet提供了许多非常有用的接口以用来读取或设置HTTP头消息,处理Cookie和跟踪会话状态等。
5.可扩展性强
由于Servlet是用Java语言编写的,因此它具备了Java语言的所有优点。
3.怎样创建servlet
- 继承HTTPServlet抽象类
- 实现servlet接口
- service方法
4.页面的跳转方式
4.1转发
req.getRequestDispatcher
4.2重定向(两种)
第一种:resp.sendRedirect(“success.jsp”);
第二种:js跳转
out.print("<script>alert('请求处理成功!');location.href='success.jsp'");
5.转发和重对象的区别
1.转发地址栏不发生改变,可以把保存到request作用域里面的值带到下个页面
转发属于服务器行为
2.重定向地址栏发生改变(显示的是目的页面的地址),不可以把保存到request作用域里面的值带到下个页面
重定向属于客户端行为
6.如何设置req和resp的编码
请看以下代码
//设置req和resp的编码
req.setCharacterEncoding("utf-8");//设置请求编码
resp.setContentType("text/html;charset=utf-8");//设置响应编码