一、什么是servlet? servlet就是一个普通类,比较特殊,可以再浏览器上运行
二、开发一个servlet的三种方法
1、实现javax.servlet.Servlet接口重写里面的方法 ②、配置web.xml,注册和映射servlet
<!--配置web全局初始化参数--> <context-param> <param-name>username</param-name> <param-value>root</param-value> </context-param> <context-param> <param-name>pwd</param-name> <param-value>123456</param-value> </context-param> <!--配置和映射servlet--> <!--注册一个servlet--> <servlet> <!--注册名--> <servlet-name>hello</servlet-name> <!--servlet的原路径--> <servlet-class>com.hpe.servlet.HellloServlet</servlet-class> <!--初始化参数(一般定义在全局变量而不是servlet,在servlet定义一定要放在指定创建时机前面)--> <init-param> <param-name>username</param-name> <param-value>root</param-value> </init-param> <!--指定servlet的创建时机--> <load-on-startup>1</load-on-startup> <!--正数或0在Tomcat加载当前项目的时候创建,数值越大,创建顺序越靠后servlet--> <!--负数在第一次请求servlet的时候创建servlet和初始化--> </servlet> <!--映射--> <servlet-mapping> <!--映射名,必须和注册名一致--> <servlet-name>hello</servlet-name> <!--浏览器访问地址url路径 /:代表当前web应用的根目录--> <url-pattern>/hello</url-pattern>运行方式:根据url地址找<url-pattern配对映射,配对成功再根据映射名找对应的注册名,找到注册名再根据他给的原路径找到文件
2:继承javax.servlet.GenericServlet 1)是一个抽象类,这个类同时实现servlet和servletConfig方法 (2)其中Service方法是抽象方法,在GenericServlet里面定义了一个全局变量servletConfig(Private ServletConfig config),并且在init方法里面对全局变量进行初始化(this.config =servletConfig;) (3)使用全局变量servletConfig实现了servletConfig接口里面的所有方法 (4)还单独定义了一个重载的init方法,他不是生命周期相关的方法,如果子类想在初始化的时候完成一些特殊的操作,子类可以重写init方法
3:继承javax.servlet.http.HttpServlet(推荐使用) (针对HTTP请求) enericServlet再进行封装,封装了dopost doget),封装成了HttpServlet(针对http请求中的post、get做了分开处理,不是全部放在service中) (1)继承GenericServlet,重写service方法 (2)在重写的 service(ServletRequest request,ServletResponse response)里面把request和response强转成Http ServletRequest和HttpServletResponse类型,这两个对象是针对于处理http请求和响应的 (3)在重载的service里面获取用户请求方式,并对请求方式进行判断,根据判断的结果去调用doGet和doPost方法(每次请求获取不同,doGet和doPost为抽象方法)(必须重写至少一个doXXX方法,否则会报405错误)
三、servlet生命周期 Servlet生命周期都是由servlet容器进行调用和执行的 重写方法{ 构造方法:当第一次加载servlet的时候执行,执行一次,创建servlet实例,说明servlet是单例的 **Init()方法(初始化)**当第一次加载servlet的时候执行,执行一次,作用是初始化servlet **service方法(接受请求,接受响应结果)**每次请求servlet都会调用该方法,获取用户请求(request)和响应结果(response) destroy()方法放web项目卸载或者服务器关闭时执行,执行一次,释放servlet资源 } 浏览器发送请求给Tomcat,Tomcat判断是不是第一次请求,根据请求的url去xml中找映射的url,就找到了注册的servlet。找到相应的servlet 调用相应的构造方法(一次),调用init方法完成初始化(一次),然后调用service方法,service处理以后,将结果响应给Tomcat,Tomcat发送给浏览器。 如果不是第一次请求,就直接调用service方法,最后项目卸载或者关闭资源时调用destroy方法(一次) 四、什么是servlet容器 就是tomcat服务器,负责管理一组servlet、jsp等的生命周期
五、servlet和客户的通信方式:HTTP协议的请求/响应模型: request接受客户端发送过来的请求, response接受服务器响应活来的结果(html页面)
六、请求方式get post 默认为get,超链接为get方式 二者区别: ①在客户端,get以地址栏(url)的方式提交,post以表单的方式提交 ②get的参数会显示在地址栏,而post不会,post的安全性相对较高 ③get传送的数据量非常小,每次只能1k;post传送的数据量较大,默认不受限制 ④ post可以进行文件的提交,而用get则不可以
七、常用状态码 200:成功 302:请求重定向,你访问我,我通知你访问另一个资源 304:如果再次访问的页面没有经过修改,通知浏览器去读缓存 404:找不到资源(第一种没有找到servlet,第二种没有找到servlet中相应的方法) 500:服务器程序出错(如空指针)