Servlet学习笔记1

web阶段
html/css 静态网页
file://打开html的本地网页
Servlet 动态网页
http://172.16.9.8:8088/Hello/hello.html

web开发(企业级开发):访问网络上的html网页?
servlet?开发动态网页
动态网页和静态网页?

一:应用开发框架
C/S:客户端/服务器端
优点:客户端分担服务器端的功能(QQ客户端的聊天记录)
安全性高
缺点:必须安装客户端
开发开销大
维护困难
不能无缝升级
B/S:浏览器/服务器端(主流的企业级开发模式,
只需要浏览器,网上银行)
优点:不需要安装客户端,浏览器就是客户端
开发的开销小
维护方便
实现无缝升级
缺点:安全性不高
服务器端硬件要求高
服务器端的操作将会是软件的核心--
--->压力(并发,效率,
网络传输)网上售票系统

二:web应用
互联网(internet):
连接全球计算机资源的网络环境
可以资源共享,通信,发送邮件等
基于TCP/IP协议:四层协议
应用层:http,ftp,pop,file...
传输层:UDP,TCP
网络层:ip
数据链路层
万维网:www World Wide Web
是互联网提供的一种服务
基于http协议
web应用:就是一种万维网

 

三:Servlet
1)CGI公共网关接口
a)早期开发动态网页,也是web开发的一门技术.
b)CGI每次都会启动一个进程来处理客户端发送的
request,然后给客户端返回处理之后的response,
即生成动态html网页,但是效率比较低。
c)基于http协议,
d)可以用多种语言开发。

2)Servlet
a)代替CGI,用来开发动态网页
b)Servlet每次都会启动一个线程来处理客户端发送的
request,然后给客户端返回处理之后的response,
即生成动态html网页,效率比较高。
c)基于http协议
d)使用Java语言编写
e)简单的定义:
servlet是运行在服务器端的java类.
servlet是j2ee的一套技术标准,一套api
包:javax.servlet.*
javax.servlet.http.*
f)专业的定义:servlet是的一个web组件。
组件:用少量的代码完成一个功能。
web组件:用少量的代码完成一个与
用户请求有关的功能(比如用户注册,登录...)
g)servlet的缩写:Server applet

四:web Server(web服务器,应用服务器)
服务器:一台主机,安装相关软件
web服务器:必须安装可以接受基于Http协议的请求,
并且可以处理该请求,最后返回响应给客
户端的软件。
软件(web容器):常见的web容器
Tomcat:由Apache提供的开源免费的软件
微软公司提供IIS:ASP.NET
商业的ejb容器:
WebLogic:BEA
WebSphere:IBM
客户端---->web服务器--->web应用
五:Tomcat
bin:存放tomcat可执行的文件(启动或者关闭tomcat)
conf:存放tomcat的配置文件
lib:存放tomcat本身软件运行需要的jar包和
部署到tomcat上的其他web应用需要的jar包。
logs:存放tomcat的日志文件
temp:存放临时文件
webapps:存放部署到tomcat上的web应用
work:存放jsp相关的servlet的文件

配置环境变量:CATALINA_HOME:
JAVA_HOME:
path:前加上 %CATALINA_HOME%\bin;
启动startup.bat
http://localhost:8080
http://localhost:8080/tomcat.gif

六:手动的编写servlet
a)web应用部署到web服务器上的结构.
可以不需要src的源文件目录。
---web应用的工程名(MyServlet)
---WEB-INF
---classes 存放字节码文件
---lib 存放jar包
---web.xml 对servlet,filter
,listener的描述
---*.html
---*.js
---*.css
---image
---*.jsp

b)编写一个Servlet类
1)extends HttpServlet
重写service()方法

c.在web.xml描述servlet
<web-app>
<servlet>
//给servlet取名字,该名字任意,
//在一个web.xml文件中每个servlet的名字必须唯一
<servlet-name>first</servlet-name>
//指定该servlet的类名(全名)
<servlet-class>com.briup.basic.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
//根据Servlet名字映射出servlet
<servlet-name>first</servlet-name>
//为servlet指明路径(/+路径名)
//虚拟路径/a/b或者/a/b/c
<url-pattern>/first</url-pattern>
</servlet-mapping>
</web-app>

d)http://localhost:8088/Servlet/first
http:// 指定访问数据的http协议
localhost 指定服务器的ip地址:127.0.0.1
8088 指定web容器(Tomcat)的端口号
http://localhost:8088 :访问web服务器 tomcat
/Servlet 指定部署到tomcat上web应用的路径
/first :代表servlet的路径(
在web.xml文件中url-pattern的内容)
http的状态码404:代表资源可不用

e)web应用的执行流程
发送请求--->找servlet--->返回请求
1)打开浏览器,输入地址按回车健后
发送一个基于http请求request(浏览器)
2)该请求被对应的web服务器中的web容器接受到。
web容器在webapps下找对应的web应用,如果找
到对应的web应用,会自动加载该web应用中的
web.xml文件。找对应的url-pattern标签---
>servlet-name标签(servlet-mapping)---
--->servlet-name标签(servlet标签中的)---
-->servlet-class标签。如果找到对应的Serlvet,
然后启动线程调用该Servlet的service方法来
处理请求。service方法将输出流通过web容器
包装成response返回客户端。
3)如果资源(web应用或者servlet资源)不存在,
直接返回404的错误给客户端,代表该资源不存在。
http协议的状态码
404 资源找不到
200 oK
505 Java程序内部异常
注意:Servlet是单例模式。
如果是第一次加载该Servlet,容器会
将该serlvet加载到虚拟机并初始化,
如果第二次调用该servlet,
容器不会加载并且初始化一个新的servlet.
调用原有servlet的service方法来处理请求。

八:创建servlet的步骤
1)编写servlet
a.继承 javax.servlet.http.HttpServlet
SecondServlet----写出xml数据以及输出request的数据

 1 package com.briup.basic;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.Servlet;
 7 import javax.servlet.ServletConfig;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 
12 //实现Serlvet接口
13 public class SecondServlet 
14     implements Servlet{
15 
16     @Override
17     public void destroy() {
18         // TODO Auto-generated method stub
19         
20     }
21 
22     @Override
23     public ServletConfig getServletConfig() {
24         // TODO Auto-generated method stub
25         return null;
26     }
27 
28     @Override
29     public String getServletInfo() {
30         // TODO Auto-generated method stub
31         return null;
32     }
33 
34     @Override
35     public void init(ServletConfig arg0) throws ServletException {
36         // TODO Auto-generated method stub
37         
38     }
39 
40     @Override
41     public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
42         // TODO Auto-generated method stub
43         //设置中文编码
44                 res.setCharacterEncoding("GBK");
45         //返回xml的数据
46         //修改response的内容类型(默认text/html)
47         res.setContentType("text/xml");
48     
49         PrintWriter out = res.getWriter();
50         out.println("<info><name>"
51                 +"张三</name><age>20"
52                 +"</age></info>");
53         out.flush();
54         out.close();
55     }
56 
57 }

b.继承 javax.servlet.GenericServlet

 1 package com.briup.basic;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.ServletContext;
 7 import javax.servlet.ServletException;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 /**
13  * Servlet implementation class FourServlet
14  */
15 public class FourServlet extends HttpServlet {
16     private static final long serialVersionUID = 1L;
17        
18     /**
19      * @see HttpServlet#HttpServlet()
20      */
21     public FourServlet() {
22         super();
23         // TODO Auto-generated constructor stub
24     }
25 
26     /**
27      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
28      */
29     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
30         // TODO Auto-generated method stub
31         System.out.println("get....");
32         doPost(request,response);
33     }
34 
35     /**
36      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
37      */
38     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
39         //HttpServletRequet中获取路径
40         System.out.println(request.getContextPath());
41         System.out.println(request.getServletPath());
42         System.out.println(request.getServerPort());
43         System.out.println(request.getRequestURL());
44         //从ServletContext中获取路径
45         ServletContext s = getServletContext();
46         System.out.println(s.getContextPath());
47         System.out.println(s.getRealPath("/"));
48         System.out.println(s.getResourcePaths("/"));
49         //日志输出
50         ServletContext sc =
51         getServletContext();
52         sc.log("处理请求");
53         //返回图片(字节流)
54         PrintWriter out = response.getWriter();
55         out.println("<html><img src='bear.png'/></html>");
56         out.flush();
57         out.close();
58     }
59 
60 }

ImageServlet --写出图片
c.实现 javax.servlet.Servlet
FirstServlet,实现接口中所有方法

 1 package com.briup.basic;
 2 import java.io.*;
 3 import javax.servlet.*;
 4 import javax.servlet.http.*;
 5 public class FirstServlet extends HttpServlet{
 6     @Override
 7     public void service(HttpServletRequest request,
 8             HttpServletResponse response)
 9             throws ServletException,IOException{
10         //设置中文编码
11         response.setCharacterEncoding("GBK");
12         //从response获取输出流
13         PrintWriter out = response.getWriter();
14         //往输出流写出动态
15         //out.println("hello Servlet");
16         //out.println("您好!!中国");
17         out.println("<html>");
18         out.println("<body>");
19         out.println("<img alt=\"none\" src=\"2.gif\" width=\"200\" height=\"200\">");
20         out.println("</body>");
21         out.println("</html>");
22         out.flush();
23         out.close();
24     }
25 }

---写出字符串数据
2)在web.xml配置servlet

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 3   <context-param>
 4     <param-name>pwd</param-name>
 5     <param-value>briup</param-value>
 6   </context-param>
 7   <display-name>jd1706_Servlet</display-name>
 8   <welcome-file-list>
 9     <welcome-file>index.html</welcome-file>
10     <welcome-file>index.htm</welcome-file>
11     <welcome-file>index.jsp</welcome-file>
12     <welcome-file>default.html</welcome-file>
13     <welcome-file>default.htm</welcome-file>
14     <welcome-file>default.jsp</welcome-file>
15   </welcome-file-list>
16   <servlet>
17     <servlet-name>hello</servlet-name>
18     <servlet-class>
19           com.briup.basic.FirstServlet
20       </servlet-class>
21   </servlet>
22   <servlet-mapping>
23     <servlet-name>hello</servlet-name>
24     <url-pattern>/hello</url-pattern>
25   </servlet-mapping>
26   <servlet>
27     <servlet-name>second</servlet-name>
28     <servlet-class>com.briup.basic.SecondServlet</servlet-class>
29   </servlet>
30   <servlet-mapping>
31     <servlet-name>second</servlet-name>
32     <url-pattern>/second</url-pattern>
33   </servlet-mapping>
34   <servlet>
35     <servlet-name>third</servlet-name>
36     <servlet-class>com.briup.basic.ThirdServlet</servlet-class>
37   </servlet>
38   <servlet-mapping>
39     <servlet-name>third</servlet-name>
40     <url-pattern>/third</url-pattern>
41   </servlet-mapping>
42   <servlet>
43     <description></description>
44     <display-name>FourServlet</display-name>
45     <servlet-name>FourServlet</servlet-name>
46     <servlet-class>com.briup.basic.FourServlet</servlet-class>
47   </servlet>
48   <servlet-mapping>
49     <servlet-name>FourServlet</servlet-name>
50     <url-pattern>/four</url-pattern>
51   </servlet-mapping>
52 </web-app>

 

posted @ 2019-02-25 22:46  技术非常不专业  阅读(137)  评论(0)    收藏  举报