创建servlet 程序的步骤
- 继承 HttpServlet (java 类实现)
- 重写doGet()或者doPost()方法
- 在web.xml 中注册Servlet
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.helloServlet.testServlet</servlet-class> <!-- servlet所在路徑-->
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/com/helloServlet/testServlet</url-pattern> <!-- HelloServlet 的訪問路徑,即a标签中的超链接或者form表格中的action -->
</servlet-mapping>
Servlet 的执行流程
- 当用户向服务器端发送给一个请求时,会首先在web.xml 配置文件中查找servlet-mapping 相对应的url-pattern。 接着以servlet-mapping 中的servlet-name 对应的名字寻找servlet 标签中相对应的servlet-name名字,最后找到该servlet 标签中的servlet-class 对应路径中的servlet 类。
Servlet 的生命周期
主要包括初始化、加载、实例化、服务和销毁几个阶段。
- Servlet 容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中的之间添加如下代码:1,数字越小表示优先级别越高。
- Servlet 容器启动后,客户首先向Servlet 发送请求。
- Servlet 类文件被更新后,重新装载Servlet。
Sevlet 获取表单数据
Sevlet 路径跳转
- 绝对路径:放之四海而皆准的路径。
相对路径:相对于当前资源的路径。
在jsp页面跳转中:
<!--使用相对路径访问HelloServlet -->
<!-- /servlet/HelloServlet 第一个/表示服务器的根目录 -->
<a href="servlet/HelloServlet">访问HelloServlet!</a><br>
<!-- 使用绝对路径 访问HelloServlet,可以使用path变量:path变量表示项目的根目录-->
<a href="<%=path%>/servlet/HelloServlet">访问HelloServlet!</a><br>
<!--表单中action的URL地址写法,与超链接方式完全相同。 -->
<a href="servlet/TestServlet">访问TestServlet,跳转到Test.jsp</a>
- 在web.xml的配置中:
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<!--url-pattern处必须以/开头,这里的/表示项目的根目录 -->
<url-pattern>/servlet/HelloServlet</url-pattern>
</servlet-mapping>
- 在servlet 的跳转中:
//请求重定向方式跳转到test.jsp,当前路径是ServletPathDirection/servlet/
//response.sendRedirect("test.jsp");
//使用request.getContextPath获得上下文对象
//response.sendRedirect(request.getContextPath()+"/test.jsp");
//服务器内部跳转,这里的斜线表示项目的根目录
//request.getRequestDispatcher("/test.jsp").forward(request, response);
request.getRequestDispatcher("../test.jsp").forward(request, response);
servlet 获取初始化参数
在web.xml 中配置Servlet 时,可以配置一些初始化参数。而在Servlet 中可以通过ServletConfig 接口提供的方法来取得这些参数。
- 在web.xml中的Servlet标签中添加
<init-param>
<param-name>username</param-name>
<param-value>admin</param-valuie>
</init-param>
即可对username进行初始化配置。
- 在Servlet 的init() 方法中调用getInitParameter(“username”) 即可获得初始化参数的值。