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>

浙公网安备 33010602011771号