1、什么是Servlet?
servlet 是在服务器上运行的小程序,一个 servlet 就是一个 Java 类,并且可以通过 “请求 - 响应” 编程模式来访问这个驻留在服务器内存里面的 servlet 程序
2、为什么要使用servlet?
我们把html放入到tomcat后,可以通过浏览器访问这些页面。但是这些页面都是静态不会变化的内容。任何人,任何时间看到的内容都是一样的。
Servlet能够使html源码动态的产生。Servlet是一个java类,他运行在服务器。
3、Servlet的第一个案例
写一个java类,继承 HTTPServlet,就是一个Servlet类。也可以在创建时,直接指定父类
重写 doGet() 或者 doPost() 方法、或者重写service方法,右击 ->source->override
在 web.xml 中配置 Servlet的访问路径以及全限定名
注意: 在使用 myeclipse2014 时及以后版本时,新建的 web 项目没有 web.xml 文件,
解决:在新建项目之后,填写完项目名,不要点 finish 要点 next,然后选中创建 web.xml 文件
使用 myeclipse 编写 servlet
src->new->servlet
重写 doGet()doPost()
部署运行
例如:把当前时间动态显示到浏览器的Servlet:
书写步骤为:
①.写这个servlet类,Servlet类应该继承HttpServlet
package com.macw.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * servlet类要继承HttpServlet * HttpServlet java项目中没有这个类,需要导入外部的jar包。 * jar包在tomcat安装路径的lib文件夹里面。 * @author Administrator * 重写父类中的servcie方法。 */ public class FirstServlet extends HttpServlet { public void service(HttpServletRequest request,HttpServletResponse response) throws IOException{ //生成动态的html源码 Date d=new Date(); System.out.println(d); String html="<html>" + "<head><title>我是标题</title></head>" +"<body>"+d+"</body>" + "</html>"; //把html源码响应给浏览器 //设置服务器给浏览器响应的数据的格式是html response.setContentType("test/html"); //设置服务器给浏览器响应的数据的编码集 response.setCharacterEncoding("utf-8"); //设置具体的响应内容。 PrintWriter out=response.getWriter(); out.print(html); out.close(); } }
②.编译servlet类成class文件
MyEclipse会自动编译该java文件。
③.把这个class文件放入到tomcat相应的目录里面(部署servlet)
Tomcat |-webapps |-myweb |-WEB-INF |-classes(专门存放servlet类) |-com.macw.servlet.FirstServlet(class文件) |-web.xml
④.每一个servlet都需要在配置文件中进行配置。
<?xml version="1.0" encoding="UTF-8"?> <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_3_0.xsd" id="WebApp_ID" version="3.0"> <servlet> <!--servlet的名字,是随便起的,要跟servlet-mapping里面的servlet-name一致,一般默认和servlet类名相同 --> <servlet-name>FirstServlet</servlet-name> <!--servlet的包名和类名(全限定名) --> <servlet-class>com.macw.servlet.FirstServlet</servlet-class> </servlet> <servlet-mapping> <!--要跟servlet中的servlet-name保持一致 --> <servlet-name>FirstServlet</servlet-name> <!--url-patten要以/开头,后面内容随便写,是浏览器的请求路径 --> <url-pattern>/first</url-pattern> </servlet-mapping>
4、常见错误
①.404错误。
根本原因:访问的资源不存在。
A.检查你的访问的路径,也就是浏览器输入的网址。Url请求。
B.检查tomcat启动时候是否报错。再根据tomcat的报错信息定位错误。
②405错误
错误原因是servlet的类的service方法没有被重写。
③500错误
500错误的原因很多,追其根本是因为java类中出现异常。
出现500错误后要详细去看报错信息。再根据报错信息定位错误。
④.地址被占用
Tomcat的端口号被占用。