最基本的Servlet程序的创建

"/"被解析为http://ip:port/工程名/

1.步骤
(1)编写类实现servlet接口
(2)实现service方法 处理请求并响应数据
(3)到web.xml中配置servlet访问地址
2.配置xml
<!-- 从这里配置文件-->
<servlet>
<!-- name标签给servlet程序起一个别名 一般为类名 别的名也行 不怕挨打的话 -->
<servlet-name>TestServlet</servlet-name> // 3又到这
<!-- 此类的全类名-->
<servlet-class>com.why.servlet.TestServlet</servlet-class> //4最后到这 我找到你了!!!
</servlet>
<!-- 这个标签给servlet程序配置访问地址 -->
<servlet-mapping>
<!-- 这个name的作用是告诉服务器我当前配置的地址给那个servlet程序使用-->
<servlet-name>TestServlet</servlet-name>//2.到这
<!-- 配置访问地址 -->
<url-pattern>/hello</url-pattern> //1.客户端访问资源从这进
<!-- /在服务器解析的时候 表示地址为http://ip:port/工程路径

目前工程路径是 /Web_2_servlet 在configuration下的application context 默认服务器启动就会访问这个位置
-->
<!-- /hello 这个hello就是http://ip:port/工程路径/hello 最好与类有一个对应关系-->
</servlet-mapping>

3常见错误:
url-pattern中路径没有以/打头 name错了 class全类名配置错误

4生命周期:
(1)执行servlet构造方法
(2) 执行init初始化方法
(3)执行service方法
(4)执行destroy方法

第一二步是在第一次访问的时候创建servlet调用完毕,之后就不在执行了
第三步每次访问(比如刷新)都会调用 此方法
关闭服务器 执行四(就是释放资源)


5.判断是post还是get请求

public void service(ServletRequest servletRequest, ServletResponse servletResponse)
//都是接口 而ServletRequast没有getmethod方法所以 需要强制类型转换
HttpServletRequest http=(HttpServletRequest) servletRequest;
//判断是get请求还是post请求
System.out.println(http.getMethod());
System.out.println("访问我干der");

可以将post请求与get请求分别执行的代码封装一下


6 一般在实践开发中 都是使用继承HTTPservlet的类来实现servlet程序
(1).编写类继承httpservlet ----》 HttpServlet叫这个 别搞错了
(2)实现get post alt+insert(类里已经有这个方法了)
(3)配置文件

7idea创建servlet程序:
包 右键 最下面 create servlet 渣渣的你就先别用注解功能配置文件了 把那个钩取消


8 servlet继承体系 见图片 servlet继承体系


9
servletConfig 就是配置servlet程序的配置信息类
1)可以获取servlet的别名 servlet-name的值
2)可以初始化参数init-param
3)可以获取servletcontext对象
在方法init里就有一个

10
1)servletConfig 和servlet程序都是由tomcat负责创建 我们负责使用
2)servlet程序默认是第一次访问的时候创建 servletconfig是每个servlet程序创建的时候
3)就会创建一个对应得servletconfig对象 不是只能在init方法中能用 我们也可以使用
4)ServletConfig config=getServletConfig();对应的是自己的配置信息
5)此时只能得到自己程序的配置信息中得数据 无法得到其他servlet程序的配置信息
6)重写init方法 ( 父类定义的保存配置信息:private transient ServletConfig config;)
父类的init方法中有这个 this.config = config;
//如果我们要重写init方法 此时我们必须将config给父类的init 否则在使用的时候会抛异常
//因为在使用如getServletConfig(); 他会调用 GenericServlet里的这个方法对吧
//在初始化的时候父类的init方法将配置信息保存了 ( this.config = config; )
//而我们重写init方法后 若没有将config给父类的init方法 自己还无法调用配置常量 config就没有被保存
//所以我们一旦调用getServletConfig();就找不到config的值了 所以就会报空指针异常
所以重写 init加 super.init(config);

猜你喜欢

转载自www.cnblogs.com/whydbk/p/12967195.html
今日推荐