Servlet笔记
- 格式:doc
- 大小:519.50 KB
- 文档页数:5
Servlet学习笔记Java相关课程系列笔记之九目录一、Servlet概述 (1)1.1 B/S架构(了解) (1)1.2什么是Servlet (1)1.3什么是Tomcat (2)1.4如何写一个Servlet(不使用开发工具) (3)1.5使用MyEclipse开发Servlet (5)1.6 Servlet是如何运行的 (6)1.7常见错误及解决方式 (6)1.8案例:根据请求次数显示结果和显示当前时间 (7)二、HTTP协议 (8)2.1什么是HTTP协议 (8)2.2通讯的过程 (8)2.3数据格式 (8)2.4 TCP/IP Monitor的使用 (9)2.5 get请求与post请求 (9)2.6如何读取请求参数 (9)2.7访问数据库(MySql) (10)2.8案例:添加员工(访问MySql数据库) (10)2.9异常:IllegalStateException (11)三、编码问题 (12)3.1 Java语言在内存当中默认使用的字符集 (12)3.2编码 (12)3.3解码 (12)3.4 Servlet如何输出中文 (12)3.5如果表单有中文参数值,也需要注意编码问题 (12)3.6案例:根据请求正确显示中文 (12)3.7将中文数据插入到数据库 (13)四、重定向 (14)4.1什么是重定向 (14)4.2如何重定向 (14)4.3注意两个问题 (14)4.4两个特点 (14)4.5重定向原理图:以2.8案例为例 (14)五、DAO (15)5.1什么是DAO (15)5.2如何写一个DAO (15)5.3工厂类 (15)六、工厂设计模式 (16)6.1什么是工厂 (16)6.2使用工厂设计模式的好处 (16)6.3如何使用工厂模式 (16)6.4案例:为2.8案例添加新功能,并使用DAO和工厂模式 (16)1七、Servlet容器处理细节 (19)7.1 Servlet容器如何处理请求资源路径以及匹配 (19)7.2一个Servlet如何处理多种请求 (19)八、Servlet的生命周期 (20)8.1 Servlet的生命周期的含义 (20)8.2 Servlet生命周期的四个阶段 (20)8.3实例化 (20)8.4初始化 (20)8.5就绪 (20)8.6销毁 (21)8.7 Servlet生命周期图 (21)8.8 Servlet生命周期相关的几个接口与类 (21)九、JSP(简要介绍,详细内容见JSP笔记) (23)9.1什么是JSP (23)9.2为什么要使用JSP (23)9.3 JSP与Servlet的关系 (23)9.4如何写一个JSP文件 (23)9.5 JSP是如何运行的 (23)9.6指令 (24)9.7案例:创建emplist.jsp页面,将表示逻辑交给JSP处理 (24)十、请求转发 (26)10.1什么是转发 (26)10.2如何转发 (26)10.3编程需要注意的两个问题 (26)10.4转发原理图 (26)10.5转发的特点 (27)10.6转发和重定向的区别 (27)10.7何时用重定向 (27)10.8何时用转发 (27)10.9案例:修改6.4案例中step7中的ListEmpServlet.java (28)十一、异常的处理 (30)11.1用输出流out (30)11.2用转发的方式 (30)11.3让容器处理系统异常 (30)11.4案例:将10.9案例中的step3中的所有catch块修改 (30)十二、路径问题 (31)12.1什么是相对路径 (31)12.2什么是绝对路径 (31)12.3如何写绝对路径 (31)12.4如何防止硬编码 (31)12.5案例:相对、绝对路径对比 (31)12.6四种情况下,正确的绝对路径写法 (32)十三、状态管理 (33)13.1什么是状态管理 (33)213.3 cookie (33)13.4如何创建一个cookie (33)13.5查询cookie (33)13.6编码问题 (34)13.7 cookie的生存时间 (34)13.8 cookie的路径问题 (34)13.9 cookie的限制 (35)13.10案例:写一个CookieUtil (35)13.11 session(会话) (36)13.12如何创建一个session对象 (36)13.13 HttpSession接口中提供的常用方法 (36)13.14 session的超时 (37)13.15用户禁止cookie以后,如何继续使用session (37)13.16 url重写 (37)13.17 session的优点 (37)13.18 session的缺点 (38)13.19案例:session验证和访问次数 (38)13.20案例:验证码 (39)13.21案例:购物车 (41)十四、过滤器 (45)14.1什么是过滤器 (45)14.2如何写一个过滤器 (45)14.3案例:敏感字过滤器 (45)14.4过滤器的优先级 (46)14.5初始化参数 (47)14.6优点 (47)十五、监听器 (48)15.1什么是监听器 (48)15.2容器会产生两大类事件 (48)15.3如何写一个监听器 (48)15.4 ServletContext(Servlet上下文) (48)15.5如何获得Servlet上下文 (48)15.6 Servlet上下文的作用 (48)15.7案例:统计在线人数 (49)十六、上传文件 (51)16.1如何上传文件 (51)16.2案例:上传文件 (51)十七、Servlet线程安全问题 (53)17.1为何Servlet会有线程安全问题 (53)17.2如何处理线程安全问题 (53)十八、Servlet小结 (54)18.1 Servlet基础 (54)18.2 Servlet核心 (54)318.4数据库访问 (54)18.5过滤器和监听器 (54)18.6典型案例和扩展 (54)十九、其他注意事项 (55)19.1连接数据库的工具 (55)19.2知名网站 (55)19.3 C/S架构:Client/Server (55)19.4 B/S架构:Browser/Server (56)4一、Servlet概述1.1 B/S架构(了解)1)什么是B/S架构客户端使用浏览器,服务端使用web浏览器,客户端跟服务器之间使用HTTP协议进行通讯。
目录第一章服务器环境搭建 (2)1.Tomcat服务器环境搭建 (2)2. tomcat文件结构 (2)第二章Servlet (3)1.定义: (3)2.servlet的生命周期 (3)3.使用MyEclipse创建servlet流程 (3)4.Web Project文档目录说明 (4)5.web.xml的配置归纳 (4)[1]配置servlet类 (4)[2]配置Servlet的实例化顺序: (5)[3]配置初始化参数 (5)[4]配置ServletContext (5)[5]配置Session有效时间 (6)6. doget()和dopost()向servlet发送请求的区别 (6)7.servlet的类和接口 (6)7.1javax.servlet包: (7)(1)Servlet接口: (7)(2)ServletConfig接口:servlet 配置对象 (7)(3)ServletContext接口:ServletContext(服务器-公共空间) (8)(4) ServletRequest接口: (9)(5)ServletResponse接口: (10)(6) Filter接口:过滤器 (10)(7) ServletContextListener接口:监听器 (12)7.2javax.servlet.http包: (14)(1) HttpSession接口:session(服务器-浏览器空间) (14)(2)HttpServletRequest接口 (15)(3)HttpServletResponse接口 (15)(4) HttpServlet类 (15)(5) Cookie类 (16)第三章常用技术归纳 (17)1.参数传递归纳: (17)2.在Servlet中操作数据库 (18)3.分页显示技术 (18)4.数据库连接池技术 (18)第一章服务器环境搭建1.Tomcat服务器环境搭建(1)环境变量配置①java-path: //配置JDK②tomcat-path: //配置服务器主目录(2)服务器端口配置在server.xml文件中Connector标签:四位数,最多65523,但一般网络用80开头(3)启动服务启:执行Bin目录下的startup.bat脚本文件。
◆背景知识介绍J2EE的13种技术java->servlet->jsp [技术总是有一个演变过程]zip粘贴到word设置◆回顾一下我们现有的技术java 基础(面向对象,集合,界面,线程,文件,网络)jdbc (java 的数据库编程)oracle / mysql / sqlserverhtml css javascript (web 开发) ->网页设计xmlserlvet+jsp ->java web开发[使用java技术做web开发]◆java ee 体系的介绍◆servlet项目演示◆web 开发介绍①静态页面(html)②动态页面1.用户可以输入数据,和页面交互(注册,购物,发帖子,付款...)2.不同时间打开页面,内容是变化.3.目前比较流行的左动态页面的技术( servlet/jsp , php , , asp, cgi )◆动态网页技术的比较(了解)◆bs 和cs的比较(1)BS:browser server 浏览器服务器(2)cs client server 客户服务为什么需要的web服务器/web究竟是干什么的?模拟一个web服务器MyWebServer.javaimport java.io.*;import .*;public class MyWebServer{public static void main(String []args) throws Exception{ServerSocket ss=new ServerSocket(80);Socket s=ss.accept();//提示一句话System.out.println("在9999 上等待连接...");OutputStream os=s.getOutputStream();BufferedReader br=new BufferedReader(new FileReader("d:\\hello.html"));String buf="";while((buf=br.readLine())!=null){os.write(buf.getBytes());}//关闭流br.close();os.close();s.close();}}◆通过tomcat来讲解BS结构◆安装tomcat服务器(1)解压即可(2)配置①在环境变量中添加JA V A_HOME= 指向你的jdk的主目录(并不是bin文件目录)②在不配置JA V AHOME的前提下启动tomcat在startup.bat的第25行中添加set JA V A_HOME=JKD路劲(3)启动tomcat服务器到tomcat 主目录下bin/startup.bat(4)验证是否安装成功http://localhost:8080(8080是默认端口如果该端口已经被占用需要修改端口)◆tomcat安装后问题解决(1)tomcat无法正常启动的原因分析1.JA V A_HOME 配置错误,或者没有配置2.如果你的机器已经占有了8080 端口,则无法启动,解决方法(1) 你可以8080 先关闭netstat –annetstat –anb 来查看谁占用该8080(2) 主动改变tomcat的端口.到conf/server.xml 文件中修改<Connector connectionTimeout="20000" port="8088"(去修给config->server.xml 的端口号)protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>(3) 能够正常启动,但是会导航到另外一个页面.去修改工具->管理加载项,把默认的导航给禁用即可.(4) 在访问tomcat时候,一定保证tomcat 服务器是启动◆tomcat的目录结构文件bin: 启动和关闭tomcat的bat文件conf: 配置文件-->server.xml: 该文件用于配置和server 相关的信息, 比如tomcat启动端口后,配置Host, 配置Context 即web应用-->web.xml : 该文件配置与web应用(web应用就相当于是一个web站点) -->tomcat-users.xml: 该文件用户配置tomcat 的用户密码和权限lib目录: 该目录放置运行tomcat 运行需要的jar包logs目录:存放日志, 当我们需要去查看日志的时候,很有用!,当我们启动tomcat 错误时候,可以查询信息.webapps目录: 该目录下,放置我们的web应用(web 站点), 比如:建立web1 目录下面放置我们的html 文件jsp 文件..图片... 则web1就被当做一个web应用管理起来(☞特别说明tomcat 6.0 以后支持tomcat 5 版本还有别的设置)work: 工作目录: 该目录用于存放jsp被访问后生成的对应的server文件和.class文件如何去访问一个web 应用的某个文件◆首页面设置及目录规范结构现在我们要求:把hello.html文件设置成该web应用的首页,则需要把web应用的目录格式做的更加规范:①在web文件夹下配置WEB-INF文件夹②在web.xml 文件中添加配置的代码:<welcome-file-list><welcome-file>hello1.html</welcome-file></welcome-file-list>③通过http://localhost:8088/web1来访问hello1.htmlweb-inf目录下的classes目录将来是存放class文件lib 目录将来时存放jar文件web.xml 配置当前这个web应用的信息.◆tomcat如何去管理虚拟目录需求: 当我们把web 应用放到webapps目录,tomcat会自动管理,如果我们希望tomcat可以管理其它目录下的web应用?->虚拟目录配置我在d 盘有一个web应用.◆虚拟目录配置步骤:①找到server.xml文件②编辑host节点添加Context path在server.xml中添加:<Context path="/myweb2" docBase="d:\web2"/>myweb2:是访问时输入的web名,实际取出的是web2中的资源"d:\web2":绝对路径下web2中存放资源如:hello2.html实际访问时输入的地址:http://localhost:8088/myweb2/hello2.html绝对路径:从根分区找某个文件相对路径:从该文件位置去找另一个文件③需要重启tomcat,才能生效.(因为是采用的dom技术讲信息加载到内存中)◆context 的几个属性的说明path:docbase:reloadable;如果设为ture ,表示tomcat 会自动更新web应用,这个开销大,建议在开发过程中,可以设为true, 但是一旦真的发布了,则应当设为false; upackWAR: 如果设为ture ,则自动解压,否则不自动解压.①:打war包cd:d/web2 然后jar –cvf web2.war *②:浏览打好的war包Deploy发布后会在webapps中自动生存改文件◆配置域名我们看和一个如何配置自己的主机名:我们在实际访问网站的过程中,不可能使用http://localhost:8080/web应用/资源名的方式去访问网站,实际上使用类似或者的方式去访问网站,这个又是怎么实现的呢?看看ie浏览器访问一个web站点的流程.实现的步骤如下:(1) 在C:\WINDOWS\system32\drivers\etc 下的host文件添加127.0.0.1 (2) 在tomcat 的server.xml文件添加主机名<Host name="" appBase="d:\web3”><Context path="/" docBase="d:\web3" /></Host>(3) 在d:\web3 加入了一个/WEB-INF/web.xml 把hello2.html设为首页面如果连端口都不希望带,则可以吧tomcat的启动端口设为80即可.(4) 重启生效◆tomcat体系的再说明图:如何配置默认主机:在tomcat/conf/server.xml 文件<Engine name="Catalina" defaultHost="主机名">◆为什么需要servlet技术?比如需求:我们希望用户可以贴,用户还可以回复....这样一些和用户可以交互的功能,用普通的java技术就完成不了, sun 就开发了servlet技术供程序员使用.◆servlet的介绍①servlet 其实就是java程序(java类)②该java 程序(java 类)要遵循servlet开发规范③serlvet是运行在服务端④serlvet 功能强大,几乎可以完成网站的所有功能⑤是学习jsp基础◆tomcat 和servlet 在网络中的位置servlet的生命周期是怎样的/servlet究竟是怎样工作的UML 时序图帮助大家理解参看execel面试题: 请简述servlet的生命周期(工作流程)答:标准版本:①WEB服务器首先会检查是否已经装载并创建了该servlet实例对象。
Servlet学习笔记(一)1.一个Servlet程序就是一个实现了特殊接口的Java类,它由支持servlet(具有servlet引擎)的web服务器调用和启动运行。
一个Servlet程序负责处理它所对应的一个或一组url地址的访问请求,并接收客户端发出的访问请求信息和产生响应内容。
2.所有的servlet(自定义的)都必须实现servlet接口(javax.servlet.Servlet)。
由于Servlet接口中有很多方法不需要实现,因此可以继承GenericServlet类。
GenericServlet实现了servlet接口的基本特征和功能。
javax.servlet.http.HTTPServlet类继承了GenericServlet类,并在其基础上进行了一些对HTTP 协议的扩充。
3.客户端每次访问一个支持HTTP的Servlet程序时,Servlet引擎都将调用Servlet的service 方法来进行处理。
HTTPServletRequest用于封装HTTP请求,HTTPServletResponse用于封装HTTP响应。
HTTPServletResponse对象的getWrite()方法可以获得一个文本输出流对象。
其内容可以作为响应消息的内容。
4.Servlet的注册与运行:(1).Servlet程序必须通过Servlet引擎来启动运行,并且存储目录有特殊要求,通常需要存储在<Web应用程序>/WEB-INF/classes/目录中。
(2).Servlet程序必须在Web应用程序的web.xml文件中进行注册和映射其访问路径,才可以被servlet引擎加载和被外界访问。
(3).<servlet>元素用于注册一个servlet。
<servlet-name>用于设置注册名,<servlet-class>用于设置servlet的完整路径。
Servlet的基础概念1. Servlet是什么?答:1) 模块化的程序,运行在服务器端,增强了请求/响应导向服务;2) 应用示例:a. 访问远端对象;b. 跟踪大量信息;c. 多用户协作2. HTTP和Servlets答:1) Servlet是HTTP协议中作为CGI的一个替代品;2) HttpServlet类用于开发HTTP为基础的Servlet3. HttpServlet答:1) 继承抽象类javax.servlet.GenericServlet,实现接口java.io.Serializable;2) 用以开发Http协议为基础的Servlet4. 服务方法答:1) 每当服务接收到对Servlet的请求时,服务器就会产生一个新线程,并调用Service。
service方法检查HTTP请求类型(GET、POST、PUT、DELETE等),并相应地调用doGet、doPost、doPut、doDelete等。
2) doGet/doPost方法接收HttpServletRequest和HttpServletResponse对象。
3) 99%的时间里,只需注意GET和/或POST请求;4) 没有任何doHead方法。
5. 返回响应答:1) PrintWriter out = response.getWriter // 用于返回文本数据给客户端2) ServletOutputStream out = response.getOutputStream // 用于返回二进制数据给客户端6. 支持Servlet的Web服务器答:1) J2EE应用服务器包括:Web Container和EJB Container;2) Web Container的Servlet Engine提供对Servlet的运行支持;用Servlet处理表单数据1. Form元素的属性答:1) ACTION: 用来指定要处理FORM数据的Servlet的URL,也可以指定FORM数据将要发送到的电子邮件;2) METHOD: 指定数据传送给HTTP服务器的方法;3) ENCTYPE: 指定数据在传输之前进行编码的方式, 例multipart/form-data 编码将每个字段作为MIME可兼容的文档的单独部分传输。
1.认识Servlet它是存在并运行于服务器端的一类实现固定接口的程序(java类),它的对象能处理客户浏览器发出的HTTP请求。
一个Java Web应用中可以包含如下内容:ServletJSP实用类(DAO类、实体类、帮助类等)静态文件(HTML、图片、JS、CSS等)描述Web应用的信息(web.xml)2.为什么使用Servlet纯HTML静态页面是没有办法处理客户端提交的HTTP请求的,需要设计一类组件来动态处理来自浏览器的不同内容HTTP请求,最终设计出了Servlet Servlet API3. 各个接口或类的用法1 javax.servletInterface Servlet实现此接口的类FacesServletGenericServlet(子类)HttpServlet(子类):处理HTTP请求的组件类(需要配置)a. 方法:构造方法: 只会被调用一次,当前Servlet只有一个实例对象,可能存在线程安全问题如何解决Servlet的线程安全问题呢?1.同步代码块,效率低下2.不使用成员变量,使用局部变量init(ServletConfig cofig) 构造方法调用创建对象后,立马调用,只会调用一次(让你有机会做一些准备工作)service():每次请求都会调用doGet(): 如果发HTTP请求是get类型的,就会被service方法调用,有大小限制,信息容易泄露doPost():如果发HTTP请求是post类型的,就会被service方法调用,无大小限制,信息较为隐蔽destory(): 应用的去掉时被调用(对象被销毁前,让你有机会做清理的工作)b. 容器处理Servlet请求的流程:①找到对应的Servlet组件类,判断内存中是否存在此类的对象没有:②有:③②:创建这个Servlet类的对象,并调用其init方法③:创建代表请求信息的httpServletReqeust对象和代表响应信息的httpServletResponse对象,将请求信息保存到reqeust对象中④:调用Servlet类对象的service方法,将reqeust和response对象传入service方法,来处理请求并响应请求⑤:当应用被挂掉,时执行Servlet对象的destory方法c. Servlet配置:在web.xml文件中配置为何要配置:Servlet程序必须通过Servlet容器来启动运行,并且储存目录有特殊要求,通需要存储在<WEB应用程序目录>\WEB-INF\classes\目录中。
一、Servlet基础1、什么是servlet?2、servlet的优点?3、什么是servlet容器?4、怎么写一个servlet?二、Servlet核心1、核心的接口与类ServletGenericServletHttpServletServletRequest,ServletResponseHttpServletRequest,HttpServletResponseServletConfigServletContext2、HttpServletRequest,HttpServletResponse的常用方法request.getParameter();request.getParameterValues();request.getSession(); request.getSession(boolean);request.getRequestURI();request.setAttribute(), getAttribute(),removeAttribute(); request.getRequestDispatcher();request.setCharacterEncoding();request.getCookies();response.getWriter();response.setContentType();response.sendRedirect();response.encodeURL(), encodeRedirectURL();response.addCookie();3、表单处理(1)如何获得表单中数据(2)表单中,有中文,如何处理(3)表单的提交方式4、比较get,post提交方式链接、表单默认提交方式、地址栏直接输入:get方式对于method="post" 是post方式。
此外,还要知道两者之间的不同,查笔记。
5、重定向与转发(1)什么是重定向、重定向的特点(2)编程(3)什么是转发,转发的特点(4)转发的编程(5)比较二者之间的不同。
1 课程回顾Servlet编程1)Servlet生命周期(重点)构造方法:创建servlet对象。
默认情况下,第一次访问servlet对象时。
只调用1次。
init方法(有参):创建完servlet对象后调用。
只调用1次。
注意:会调用无参的init方法。
(开发者使用有参参的init方法)service方法:servlet提供服务的方法。
每次发出请求调用。
注意:request对象,response对象destroy方法:tomcat服务器停止或web应用重新部署,servlet对象销毁,destroy方法被调用。
2)ServletConfig对象获取servlet的初始化参数:getInitParameter("name ");键值getInitParameterNames();键名3)ServletContext对象得到web应用路径:context.getContextPath();request.getContextPath(); 等价于上面的代码得到web应用参数:context.getInitParameter("name");(值)context.getInitParameterNames();(名)域对象:context.setAttribute("name",Object): 保存数据(set保存数据设置)context.getAttribute("name") 得到数据(得到数据)context.removeAttribue("name") 清除数据(清楚数据)转发context.getRequestDispatcher("路径").forward(request,response);request.getRequestDispacher("路径").forward(request,response); 等价于上面的代码注意:转发与重定向的区别得到web应用中的资源文件context.getRealPath("路径")context.getResourceAsStream("路径");(该部分很重要,容易出错,风险很大)/**. 代表java命令运行目录。
Servlet编程Java语言的一大特色是面向对象的网络编程,那么它的网络编程的优势体现哪里呢?如Socket编程、Web编程等,在JSP技术产生之前要用Java实现Web编程,就得用Servlet。
那么Servlet到底是个什么东西呢?一、静态网站和动态网站1、静态网站静态网站主要是由一些静态网页有机组合而成的,主要采用了html、css、Javascript等Web开发的前端技术(用于浏览器端的技术),完成客户端信息的显示和提交信息的客户端验证,都是基于HTTP协议的静态页面。
HTTP是一种协议、一种标准。
在B/S结构中,主要是通过HTTP协议来完成用户的请求(request)和服务器的响应(response)(无论采用get或post方式都是基于http协议完成数据的传输)。
要完成B-S 的交互,首先B要向S请求,然后S端根据请求产生结果,再把这个结果返回给B,那么,在S端的产生结果的功能若用Java编程实现,是怎样实现的呢?2、动态网站动态网站是客户端的信息是根据用户需求动态地由服务器提供用户的网站,它主要采用了JSP/Servlet、ASP、PHP、CGI等技术实现的。
在JSP技术产生之前,Java完成用户的动态响应主要是靠Servlet完成的。
二、Tomcat简介1、了解Tomcat1)Tomcat是Apache的开源项目,可登陆了解。
2)Tomcat是Web Application的服务器,那么应该对Tomcat有一个简单的了解。
2、Tomcat的安装或解压1)Tomcat安装(略)2)Tomcat安装目录下的各个子目录的简单说明1)bin:启动目录,主要有startup.bat(启动服务器)和stopdown.bat(关闭服务器);2)conf:配置文件所在目录,其中主要有server.xml(可以配置服务器监听的端口),tomcat-users.xml,context.xml文件;3)lib:包目录,包括服务器启动必须的包目录和一些用户自己可以放置的包目录(供web应用使用);4)logs:日志目录,包括catalina.log,localhost.log,host-manager.log,主要记录系统启动和关闭日志,已经一些管理日志和异常信息;5)temp:临时目录存放Tomcat运行时产生的临时文件;6)webapps:默认的放置web应用的目录(可以在conf/server.xml中修改,还可以增加新的web应用发布目录);7)work:工作目录,jsp和servlet生成的.java文件和由此编译好的.class文件默认都放置在此目录下(可以在conf/context.xml中修改)3、环境变量JA V A_HOME的配置JA V A_HOME变量的作用,这个变量用于设置JDK的安装根目录,对它的设置方式有三种:1)在命令行设置:set java_home=jdk的安装根目录,只对这次的命令窗口有效,启动Tomcat也要在该窗口下;下次重启了命令窗口,还得重新设置,重新启动Tomcat。
2)通过我的电脑设置用户环境变量的方式进行,对其它的服务器也有效3)修改Tomcat的启动脚步文件startup.bat(startup.sh是linux中的启动Tomcat的命令):增加setjava_home=jdk的安装根目录,只对Tomcat这个服务器有效。
附:Tomcat的默认端口号是8080,http://localhost:8080/打开Tomcat主页;若把这个端口号改为80则可用http://localhost:80/或http://localhost/打开Tomcat主页。
4、一个完整的Web Application的目录结构WEB-INF/classes、lib、web.xml,这个目录结构是SUN公司定义的规则,而不是Apache公司。
三、Servlet简单地说,Servlet是一种标准、规范,是一些接口的集合,说白了就是我们Java语言编写的一个类,并对这个类做了一些限制。
也就是说,在目前比较流行的B/S结构中,我们一般使用http协议来完成数据的网络传输,因此这里的Servlet要继承HttpServlet类(因为还有基于其它协议的Servlet)。
Servlet不是一个普通的Java类,不能像Java Application一样单独运行,需要容器(服务器)的支持,这样的容器有Tomcat、Resin(jsp放进去运行速度快)、Apache、Weblogic、IIS等。
Servlet是运行在服务器端的小程序,Applet是运行在客户端的小程序,实际上Java中主要有三种程序:Java Application、Servlet和Applet。
1、一个简单的Servlet示例1)写一个FirstServlet类import javax.servlet.http.*;import javax.servlet.*;public class FirstServlet extends HttpServlet {public void doGet(HttpServletRequest request,HttpServletResponse response){System.out.println("HelloWorld");//在Tomcat的控制台输出字符串}}2)编译这个类生成字码文件FirstServlet.class需要设置环境变量classpath的值即能够找到Tomcat中servlet-api.jar即classpath=D:\tomcat6.0\lib\servlet-api.jar,这样才能够找到HttpServlet、HttpServletRequest、HttpServletResponse等。
否则将没办法用javac编译Java源文件。
3)在Tomcat安装目录的webapps目录下建立一个web application的基本目录结构:test_servlet/classes、lib、web.xml;并把FirstServlet.class文件拷贝到classes目录下。
4)配置web.xml文件,该文件的内容如下:<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd"version="2.5"><servlet><servlet-name>FirstServlet</servlet-name><servlet-class>FirstServlet</servlet-class></servlet><servlet-mapping><servlet-name>FirstServlet</servlet-name><url-pattern>/servlet/firstServlet</url-pattern></servlet-mapping></web-app>5)启动Tomcat,在浏览器地址栏输入:http://localhost:8080/test_servlet/servlet/firstServlet,在Tomcat的控制台即可看到打印的字符:HelloWorld,若需要在浏览器端显示一个字符串需要修改FirstServlet.java为:import javax.servlet.http.*;import javax.servlet.*;import java.io.*;public class FirstServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{response.setContentType("text/html;charset=gbk");PrintWriter out=response.getWriter();out.print("HelloWorld");}}2、Servlet的简单深入PrintWriter out=response.getWriter();out.print("HelloWorld"); 在浏览器端显示HelloWorld字符串,查看源文件其内容只有HelloWorld,而没有其它的标签,如果要有其它的标签则需要把它们用out.print(…)方法输出才行。
如下面的代码,查看源文件时会开到所有的标签。
response.setContentType("text/html;charset=GBK");PrintWriter out=response.getWriter();out.print("<html>");out.print("<head>");out.print("<title>");out.print("测试http的Servlet");out.print("</title>");out.print("</head>");out.print("<body>");out.print("HelloWorld,中国");out.print("</body>");out.print("</html>");这样如果用Servlet输出html中各种标签的信息,是太麻烦了,并且有些标签时能省略的,如表格、表单的等就不能省略。
那么,怎么解决这个问题呢?JSP技术即可,JSP技术可以把静态信息(各种html 标签)从Servlet中分离出来,让Servlet主要完成业务逻辑的处理等,而JSP页面主要用于显示html静态信息。