Servlet
1.介绍
servlet技术是在java ee出现之前就存在了,在开发动态网页中得到广泛的应用,直到现在的java ee项目中也是非常重要的,同时jsp也是在servlet的基础上发展起来的。
servlet(java服务器小程序)是用java编写的服务器程序,它的特点:
1.由服务器调用和执行
2.用java语言编写的
3.按照servlet规范开发
4.功能强大,可以完成几乎所有的网站功能
2.开发工具
普通的文本编辑器notepad,uedit32
集成开发工具jcreator,jbuilder,eclipse,editplus,netbean
3.servlet体系结构
4.开发servlet的三种方法
实现servlet接口
继承GenericServlet
继承HttpServlet(最常用的方法)
5.servlet的生命周期
servlet部署在容器里(我们使用的是Tomcat,也可是别的,比如jboss,weblogic。。。),它的生命周期由容器来管理。
servlet的生命周期分为以下几个阶段:
1.装载servlet,由相应的容器来完成
2.创建一个servlet实例
3.调用servlet的init()方法,该方法只会在第一次访问servlet时被调用一次
4.服务:调用servlet的service()方法,一般业务逻辑在这里处理,该方法在访问该servlet时,会被调用
5.销毁:调用servlet的destroy()方法,销毁该servlet实例,该方法在以下情况被调用:
a)tomcat重新启动
b)reload该webapps
c)重新启动电脑
6.开发流程
1.建立一个web站点
2.站点内引入Tomcat文件夹下lib文件夹里的servlet-api.jar
3.编写servlet
4.部署servlet
servlet编译后放在WEB-INF/classes下,注意package
在web.xml文件中添加如下代码:
<servlet>
<!—给servlet取名,可以随意取名-->
<servlet-name>hello</servlet-name>
<!—指明servlet的路径,就是servlet的包+类名-->
<servlet-class>com.nenu.Hello</servlet-class>
</servlet>
<servlet-mapping>
<!—给servlet取名,可以随意取名-->
<servlet-name>hello</servlet-name>
<!—浏览器中输入的url,可以随意取名-->
<url-pattern>/hello<url-pattern>
</servlet-mapping>
5.启动Tomcat,访问你的servlet,在浏览器的地址栏中输入:http://127.0.0.1:8080/myWebSite/hello回车就可以看到servlet的输出
三个例子
例1:实现servlet接口
Hello.java
- //实现servlet接口
- package com.nenu;
- import javax.servlet.*;
- import javax.servlet.ServletConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import java.io.IOException;
- import java.io.*;
- public class Hello implements Servlet{
- //init只执行一次
- public void init(ServletConfig parm1) throws ServletException {
- System.out.println("init");
- }
- public ServletConfig getServletConfig() {
- return null;
- }
- //service负责业务逻辑
- public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
- System.out.println("service");
- //处理中文
- res.setContentType("text/html; charset=gbk");
- PrintWriter pw=res.getWriter();
- pw.println("Hello,实现servlet接口.");
- }
- /**
- * Method getServletInfo
- *
- *
- * @return
- *
- */
- public String getServletInfo() {
- // TODO: Add your code here
- return null;
- }
- /**
- * Method destroy
- *
- *
- */
- public void destroy() {
- // TODO: Add your code here
- System.out.print("destroy");
- }
- }
web.xml中
- <servlet>
- <servlet-name>Hello</servlet-name>
- <servlet-class>com.nenu.Hello</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Hello</servlet-name>
- <url-pattern>/Hello</url-pattern>
- </servlet-mapping>
访问:http://localhost:8080/MyServlet/Hello
例2:继承GenericServlet
HelloGen.java
- 继承GenericServlet实现servlet
- package com.nenu;
- import javax.servlet.GenericServlet;
- import java.io.*;
- import javax.servlet.*;
- public class HelloGen extends GenericServlet {
- //重写service方法
- public void service(ServletRequest req, ServletResponse res) {
- try{
- PrintWriter pw=res.getWriter();
- pw.println("Hello, GenericServlet");
- }
- catch(Exception ex){
- ex.printStackTrace();
- }
- }
- }
web.xml
- <servlet>
- <servlet-name>HelloGen</servlet-name>
- <servlet-class>com.nenu.HelloGen</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>HelloGen</servlet-name>
- <url-pattern>/HelloGen</url-pattern>
- </servlet-mapping>
例3: 继承HttpServlet(最常用的方法)
HelloHttp.java
- //继承HttpServlet实现servlet
- package com.nenu;
- import javax.servlet.*;
- import java.io.*;
- import javax.servlet.http.*;
- public class HelloHttp extends HttpServlet {
- //处理get请求
- public void doGet(HttpServletRequest req, HttpServletResponse res){
- this.doPost(req,res);
- }
- //处理post请求
- public void doPost(HttpServletRequest req,HttpServletResponse res){
- try{
- PrintWriter pw=res.getWriter();
- pw.println("hello, servletHttp");
- }
- catch(Exception ex){
- ex.printStackTrace();
- }
- }
- }
web.xml