17. Servlet
17.1 什么是Javaweb程序?
运行在服务器上的java程序就是javaweb程序,通过浏览器访问,例如我常说的网站就是典型的web程序。Web程序属于B/S架构的程序。
17.2 B/S架构的程序?B/S架构的程序与C/S架构的程序有什么区别?
B---浏览器(Browser) C---客户端(Client) S-----服务器(Server)
B/S架构程序就是通过浏览器访问服务器上的程序,是线上的;C/S架构程序就是通过客户端访问服务器上的程序,是需要下载安装的。
B/S架构的程序 |
C/S架构的程序 |
通过浏览器访问【在线的】 |
通过客户端访问【下载的/安装的】 |
节省本地磁盘资源【不需要下载】 |
消耗本地磁盘资源【将资源下载到本地】 |
维护起来简单【只需要维护好服务器】 |
维护起来复杂【既要维护客户端又要维护服务器】 |
成本低 |
成本高 |
现在所有的C/S架构的程序基本上已经被B/S架构的程序取代。
17.3 Web程序的发展过程?
早期Web程序只能通过浏览器访问静态的页面【html】
随着需求的变化,后来Web程序可以通过浏览器访问动态资源【动态网页】。
静态页面---任何请求访问的页面都是一模一样的,不后有任何变化【标配】
动态网页---随着请求的变化打开不同的页面【不同的用户/不同是时间】【定制】
现在随着用户需求得到变化,我们需要提供不同的资源,以满足所有的用户需求,那么这时我们就要掌握动态网页技术。
17.4 常见的动态网页技术?
cgi【通用网关接口】(运行慢,基于进程的数据交互麻烦)、Servlet/JSP、asp、php。
17.5 什么是Servlet?
运行在服务器上用来处理用户请求,并做出响应的Java程序就是Servlet。
17.6 常见的Web服务器?
WEB服务器也称为WWW服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。Unix和Linux平台下常用的服务器有ApacheTomcat、Nginx[负载均衡【分布式】]、IBM WebSphere、WebLogic等,其中应用最广泛的是ApacheTomcat。而Window NT/2000/2003平台下最常用的服务器是微软公司的IIS。
17.7 ApacheTomcat服务器下载安装启动测试与关闭的相关操作?
下载ApacheTomcat服务器:http://tomcat.apache.org/
安装ApacheTomcat服务器【apache-tomcat-7.0.96-windows-x64.zip】,在指定目录下解压缩。
启动运行ApacheTomcat服务器,在安装目录中打开bin目录,运行批处理文件[startup.bat],即可运行ApacheTomcat服务器
关闭ApacheTomcat服务器,在安装目录中打开bin目录,运行批处理文件[shutdown.bat],即可关闭ApacheTomcat服务器
ApacheTomcat服务器http请求的默认访问端口是8080,这个端口是可以改变的,下面我们就来改变http请求的访问端口。
在安装目录中打开conf目录下的server.xml,添加如下代码:
<Connector port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
17.8 开发一个简单的Servlet程序部署并运行
工程创建步骤就不描述了,注意的是在创建的时候选择Tomcat服务器的时候版本要与安装的服务器版本一致,下面主要说明Java代码的编写。
在src下创建一个包,在这个包中创建一个“TestServlet”类,继承HttpServlet,重写doGet/doPost方法
public class TestServlet extends HttpServlet{
//重写doGet/doPost方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
//将需要由servlet处理的请求的具体动作写入doPost方法中
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out=resp.getWriter();
out.println("<html>");
out.println("<head><title>one servlet</title></head>");
out.println("<body>");
out.println("<center>");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/d