1、通用初级阶段html
1. 得写一个 web 工程,一个服务器java
切换另外一个工做空间 -------- File ------- switchworkspace 。 修改字体,Genernl 中 app 中 color 中 basic 中 test ,改编码。 再配服务器,右键 new 一个 server ,按着感受来,再而后 open ,点击第二个,保存all。 创建一个 Dymamic web Servlet,输入名字, 3.0 改为 2.5 。 在工程里创建一个 html 文件,如何在其余电脑访问这个 html 文件。在工程处右键点击 Run as ... 就能够在其余电脑上访问了: http://localhost:8080/HelloServlet/index.html
2. 测试运行 web 工程。web
1. 新建一个类, 实现Servlet接口浏览器
public class HelloServlet implements Servlet{ @Override public void destroy() { // TODO Auto-generated method stub } @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub } @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { System.out.println("hello,zhangkaijian"); } }
只在 service 中添加语句。tomcat
2. 配置Servlet , 用意: 告诉服务器,咱们的应用有这么些个servlet服务器
在webContent/WEB-INF/web.xml里面写上如下内容。 <!-- 向tomcat报告, 我这个应用里面有这个servlet, 名字叫作HelloServlet , 具体的路径是com.itheima.servlet.HelloServlet --> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.itheima.servlet.HelloServlet</servlet-class> </servlet> 全路径就是包名+类名 <!-- 注册servlet的映射。 servletName : 找到上面注册的具体servlet, url-pattern: 在地址栏上的path 必定要以/打头 --> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/a</url-pattern> </servlet-mapping> 3. 在地址栏上输入 http://localhost:8080/项目名称/a
</welcome-file-list> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.heima.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/a</url-pattern> </servlet-mapping> </web-app>
先后的 servlet -name 必须相同app
a.(向tomcat报告, 我这个应用里面有这个servlet, 名字叫作HelloServlet , 具体的路径是com.itheima.servlet.HelloServlet)前面一段修改的内容eclipse
b.(注册servlet的映射。 servletName : 找到上面注册的具体servlet, url-pattern: 在地址栏上的path 必定要以/打头) -------后面一段ide
配置好了以后,重置Tomcat服务器,在浏览器中输入 http://localhost:8080/HelloServlet/a ,回头看 eclipse 中的 setup 信息 。有信息出现就说明成功了。post
在 弄全路径时,
<servlet-class>com.heima.servlet.HelloServlet02</servlet-class>
在类的下线点击,再复制全路径。
2、利用继承关系,重写方法。
<servlet> <servlet-name>HelloServlet02</servlet-name> <servlet-class>com.heima.servlet.HelloServlet02</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet02</servlet-name> <url-pattern>/HelloServlet02</url-pattern> </servlet-mapping>
继承类
public class HelloServlet02 extends HttpServlet { // @Override // protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // System.out.println("hellodaishiqi02-----"); // } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doGet(req, resp); System.out.println("get--"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doPost(req, resp); System.out.println("post--"); } }
在浏览器里输入:http://localhost:8080/HelloServlet/HelloServlet02,便可。
3、Servlet 生命周期
在其中 doGet 和 doPost 方法中 ,都不用 super 中父类的方法。,直接删掉。
init方法
在建立该servlet的实例时,就执行该方法。 一个servlet只会初始化一次, init方法只会执行一次 默认状况下是 : 初次访问该servlet,才会建立实例
service方法
只要客户端来了一个请求,那么就执行这个方法了。 该方法能够被执行不少次。 一次请求,对应一次 service 方法的调用
destroy方法
servlet 销毁的时候,就会执行该方法 1. 该项目从 tomcat 的里面移除。 2. 正常关闭 tomcat 就会执行 shutdown.bat
doGet 和 doPost不算生命周期方法,所谓的生命周期方法是指,从对象的建立到销毁必定会执行的方法, 可是这两个方法,不必定会执行。
让Servlet建立实例的时机 提早。
<servlet> <servlet-name>HelloServlet04</servlet-name> <servlet-class>com.itheima.servlet.HelloServlet04</servlet-class> <load-on-startup>2</load-on-startup> </servlet>
ServletConfig
在测试类中
public class HelloServletConfig extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获得servlet配置对象 。 专门用于在配置servlet的信息 ServletConfig config = getServletConfig(); //获取到的是配置servlet里面 servlet-name 的文本内容 String servletName = config.getServletName(); System.out.println("servletName"+servletName); //二、。 能够获取具体的某一个参数。 String address = config.getInitParameter("address"); System.out.println("address="+address); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } }
在上面 doGet 方法中 ,还能够遍历出全部参数和名称。
Enumeration<String> names = config.getInitParameterNames(); //遍历取出全部的参数名称 while (names.hasMoreElements()) { String key = (String) names.nextElement(); String value = config.getInitParameter(key); System.out.println("key==="+key + " value="+value); }
在 web.xml 中
<servlet> <servlet-name>aa</servlet-name> <servlet-class>com.heima.servlet.HelloServletConfig</servlet-class> <init-param> <param-name>address</param-name> <param-value>beijing...</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>aa</servlet-name> <url-pattern>/HelloServletConfig</url-pattern> </servlet-mapping>