JavaWeb:Servlet
- SRC:用来存放java代码
- web:用来存放web资源文件:css,js等
- WEBINF:收服务器保护的目录,浏览器无法直接访问这个目录内容
- web.xml:动态web工程的配置部署描述文件,可以配置很多web工程的组件(依赖)如:Servlet程序、Filter过滤器、Listener监听器等等
- lib用来存放第三方jar包(需要自己配置)
Servlet
-
Servlet是规范之一,规范就是接口
-
Servlet是JavaWeb三大组件之一。
- 三大组件:Servlet程序、Filter过滤器、Listener监听器
-
Servlet是运行在服务器上的一个java小程序,用来接受客户端发送过来的请求,并响应数据给客户端
-
需要实现类来实现接口Servlet的所有方法
-
service方法是专门用来处理请求和响应的
- 编写一个类去实现Servlet接口
- 实现service方法,处理请求并响应数据
- 到web.xml中配置servlet程序的访问地址
<!--servlet标签给tomcat配置servlet程序-->
<servlet>
<!--sservlet-name标签给servlet程序起一个别名,一般是类名-->
<servlet-name></servlet-name>
<!--sservlet-class是Servlet的全类名-->
<servlet-class></servlet-class>
</servlet>
<!--servlet-mapping标签的作用是给servlet程序配置访问地址-->
<servlet-mapping>
<!--servlet-name标签的作用是告诉服务器,我当前配置的地址是那个Servlet服务器使用的-->
<servlet-name>HelloServlet</servlet-name>
<!--url-pattern标签配置访问地址
/ 斜杠表示http://locaihost:8080/工程路径-->
<url-pattern></url-pattern>
</servlet-mapping>
- http://localhost:8080/W12_29/hello
- http:// 指http协议
- localhost 是服务器ip
- :8080 是服务器端口号
- /W12_29 是工程路径
- /hello 资源路径
生命周期
- 执行Servlet构造器方法
- 执行init初始化方法
- 执行service方法
- 指定destrop销毁方法
- 第一、第二步只在第一次访问的时候创建
servlet才会被调用 - 第三步每次访问都会调用
- 第四步只在
web工程停止的时候才会执行
//因为post和get方法都需要对应service方法,所以需要使用getMethod方法
//使用service的形参servletRequest的子类来调用getMethod方法
HttpServletRequest httpServletRequest =
(HttpServletRequest) servletRequest;
httpServletRequest.getMethod();
//此时返回结果为GET
<form action="http://localhost:8080/W12_29/hello" method="get">
<!--此时method为get,调用service的时候会返回GET-->
通过如上方法,可以将service对get和post进行分类操作。
一般在实际开发中,继承HTTPServlet类的方式去实现Servlet程序
- 编写一个类去实现HTTPServlet接口
- 根据业务需要重写doGet或doPost方法
- 到web.xml中配置servlet程序的访问地址
public class HelloHTTPServlet extends HttpServlet implements Servlet {
//重写doGet方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
//重写doPost方法
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
也可以使用IDEA自动生成Servlet.java

ServletConfig
ServletConfig三大作用
-
可以获取Servlet程序的别名servlet-name的值
servletConfig.getServletName(); -
获取初始化参数init-param
ervletConfig.getInitParameter(param-name); //使用key获取value——param-value -
获取ServletContext对象
servletConfig.getServletContext();
- 实现类重写init方法时,必须调用父类的init方法。否则会出现空指针异常。
ServletContext
- ServletContext是一个接口,它表示Servlet上下文对象
- 一个工程只有一个
ServletContext的实例,ServletContext是在web工程部署时创建,在web停止时销毁。 - ServletContext对象是一个域对象
- 什么是域对象
- 域对象,是像Map一样可以存取数据的对象,叫做域对象
- 这里的域的范围是整个web工程
| 存数据 | 取数据 | 删除数据 | |
|---|---|---|---|
| Map | put() | get() | remove() |
| 域对象 | setAttribute() | getAttribute() | removeAttribute() |
-
ServletContext的四个作用-
获取web.xml 中配置的上下文参数
context-param//通过ServletConfig获取ServletContext对象 ServletContext servletContext = getServletConfig().getServletContext(); System.out.println(servletContext.getInitParameter("username")); System.out.println(servletContext.getInitParameter("pwd")); -
获取当前的工程路径,格式:/工程路径
servletContext.getContextPath() -
获取工程部署后在服务器硬盘上的绝对路径
servletContext.getRealPath("/") -
像Map一样存取数据
servletContext.setAttribute("key1","value1");
-

浙公网安备 33010602011771号