Servlet概述
什么是Servlet?
Servlet:Server Applet,服务器端的Java程序,是由SUN公司提供的一门动态Web资源开发技术
Servlet本质上其实就是一段Java程序。和之前的Java程序不同的,Servlet程序是无法独立运行的,必须将Servlet程序放在服务器中,由服务器调用才可以执行!
静态Web资源:任何人在任何条件下访问同一个网页,看到的都是相同的效果,这样的网页叫做静态Web资源。(比如百度首页、tmooc首页)
动态Web资源:在不同的访问条件下,访问同一个网页,看到的是不同的效果,这样的网页叫做动态Web资源。(商城的购物车页面、订单页面等)
运行在服务器端的Servlet程序,其作用是什么?
总结:运行在服务器端的Servlet程序的作用是:在服务器将请求接收过来后,对请求进行处理,即处理请求
使用Eclipse创建Servlet
通过Eclipse创建Servlet,默认继承HttpServlet。由于HttpServlet也是Servlet接口的子类,让HelloServlet继承HttpServlet,相当于间接实现了Servlet接口。
继承HttpServlet类,默认会覆盖doGet方法和doPost方法,两个方法的作用为:
-
doGet方法:当浏览器发送请求的方式为GET提交时, 将会调用doGet方法来处理请求
-
doPost方法:当浏览器发送请求的方式为POST提交时, 将会调用doPost方法来处理请求
提示:如果当GET提交和POST提交处理代码相同时,可以将代码写在其中一个方法里(例如写在doGet中),并在另外一个方法(例如doPost)中调这个方法。这样一来,不管是GET提交还是POST提交,最终doGet方法都会执行,都会对请求进行处理!!
创建好的servlet完整版的程序如下:
package com.tedu;
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 HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/*当浏览器发送请求访问Servlet,请求方式为GET提交,服务器将会调用doGet方法处理这次请求
*
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//对请求进行处理
//如果输出中文,加上下面的代码
response.setContentType("text/html;charset=utf-8");
//通过response获取一个输出流(向浏览器发送数据)
PrintWriter out=response.getWriter();
out.write("hello world");
}
/*当浏览器发送请求访问Servlet,请求方式为post提交,服务器将会调用doPost方法处理这次请求
*
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
其中解决的中文乱码的问题及优化
Servlet在web.xml中的配置
在通过Eclipse创建Servlet时,会自动在web.xml文件中进行Servlet相关信息的配置
(注意:如果是复制Servlet类文件,但配置信息不会跟着复制,需要自己手动添加配置,否则复制的Servlet将无法访问!)
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.tedu.HelloServlet</servlet-class>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
关于上面的配置信息:
a) Eclipse每创建一个Servlet, 就会在web.xml文件中添加两个标签:和标签(可以将这两个标签看成一个组的标签)
b) 和标签内都会有一个标签,标签的内容可以更改,但要求更改后的这两个标签的内容也必须一致。
c) 标签用于配置Servlet类的全路径名(即包名+类名)
需要注意:如果在创建Servlet后修改了Servlet类的名称,这个地方也要一起更改,否则将会出现"ClassNotFoundException" 即类找不到异常
d) 标签用于配置浏览器以什么路径访问当前Servlet(即Servlet对外访问的路径),默认的路径是:/类名
例如:上面为HelloServlet配置的为 /HelloServlet,因此我们在浏览器中的访问路径则为:
http://主机名/web项目访问路径/HelloServlet
Eclipse如何发布一个Web应用
当通过eclipse将day09项目发布到服务器中,是直接将day09拷贝到服务器中对应的目录下吗?
发布的过程如下:
Servlet继承关系
Servlet调用过程