20160320servlet学习笔记

来源:互联网 发布:seo外包公司北京华网 编辑:程序博客网 时间:2024/05/29 09:06

1.开发servlet有三种方法,a.实现servlet接口b.继承GenericServletc.继承HttpServlet(实际开发中用这种方法).

2.用实现接口的方式开发一个servlet,实现hello,world和当前时间.

①建立一个WEB应用

②在WEB应用里建立WEB-INF文件夹,配置web.xml

③在WEB-INF文件夹下建立classes文件夹和lib文件夹(开发在classes文件夹中完成)

④在classes文件夹下建立.java文件,当编译完成后tomcat调用的是.class文件,此时删除源文件也可以运行.

⑤每开发一个servlet都要部署到web.xml里一次.

部署代码示例

   <servlet>
       <!--servlet-name给该servlet取个名字,可以和当前servlet名字不一样,但最好一致-->
        <servlet-name>MyFirstServlet</servlet-name>
       <!--servlet-class指明该servlet放在哪个包下,格式是包.包.类(不用带class)-->

        <servlet-class>com.gzl.MyFirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <!--这个部分的servlet-name要与上面的一致-->
        <servlet-name>MyFirstServlet</servlet-name>
      <!--url-pattern是访问该servlet资源名的一部分-->
        <url-pattern>/ABC</url-pattern>
    </servlet-mapping>

⑥详细代码如下

package com.gzl;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class MyFirstServlet implements Servlet{//该函数功能是initialize servlet(只在开始时调用一次)public void init(ServletConfig config)throws ServletException{}//获取ServletConfig对象public ServletConfig getServletConfig(){return null;}//服务函数,业务逻辑代码写在这里.该函数每次请求都会被调用.public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException{//在控制台中输出System.out.println("hello,world"+new java.util.Date());//在浏览器中输出,此处记得即便reloadable值为true也要重启tomcat,未知原因导致不重启不生效.res.getWriter().println("hello,world"+new java.util.Date().toLocaleString());}//获取Servlet配置信息public java.lang.String getServletInfo(){return null;}//销毁该servlet,与init函数相对应,destroy的功能是从内存中清除该servlet,只调用一次.public void destroy(){}}
⑦访问http://localhost:8080/WEB3/ABC即可访问该servlet资源.

3.在tomcat的网页管理器中可以不重启tomcat实现reload一个web应用

4.servlet生命周期分析

①servlet第一次被调用时会运行init方法将servlet加载到内存

②运行service函数

③第二次以及以后调用service值运行service方法

④当web应用reload或者tomcat重启或者关机会调用destroy方法销毁当前servlet.

5.即使url-pattern映射为abc.html也不会报错,服务器可以正常调用servlet,另外映射可以多级映射.

6.如果某个url-pattern的映射是/*则所有找不到的资源都会访问他.

7.通配符映射只有两种格式一种是*.后缀名另一种是/*开头/*结尾.

8.匹配规则是谁的匹配度高谁就命中,*.do的优先级最低.

9.一个变量被多个用户共享可以用synchronize(this){}同步机制解决.

10.如果不想共享一个变量,那在方法里定义变量即可.

0 0
原创粉丝点击