1、Servlet生命周期
a) Servlet生命周期定义为从创建到销毁的过程,遵循的过程为:
i. Servlet调用init()方法进行初始化;
ii. Servlet调用service()方法来处理客户端的请求;
iii. Servlet调用destory()方法终止销毁;
iv. 最后,Servlet是通过JVM的垃圾回收机制进行回收的;
v. 实例:
package com.ittx.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ittx.java.db.util.DBConnection;
public class HelloServlet extends HttpServlet{
public void init(ServletConfig config) throws ServletException{
System.out.println("init 初始化servlet方法>>>>>>>>");
}
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException{
System.out.println("doget 执行get方法>>>>>>");
String userName = request.getParameter("userName");
String passWord = request.getParameter("password");
System.out.println("userName"+userName+">>>>>"+"passWord"+passWord);
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException , IOException{
System.out.println("dopost 执行post方法>>>>>");
String userName = request.getParameter("userName");
String passWord = request.getParameter("password");
System.out.println("userName"+userName+">>>>>"+"passWord"+passWord);
PrintWriter printWriter = response.getWriter();
printWriter.println("<h1>"+userName+" "+passWord+"</h1>");
printWriter.flush();
printWriter.close();
}
public void destory(){
System.out.println("destory 销毁servlet方法>>>>>");
}
public void query() throws ClassNotFoundException, SQLException{
Connection connection = null;
PreparedStatement p = null;
connection = DBConnection.getConnection();
}
}
2、Servlet跳转界面的两种方式
a) 转发请求 :客户端向Servlet发送一个请求后,该Servlet会向本身再发送一次请求到另一URL,在这个过程中,只向服务器发送一次请求,效率非常高;
i. 实例:
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException , IOException{
// System.out.println("dopost 执行post方法>>>>>");
String userName = request.getParameter("userName");
String passWord = request.getParameter("password");
// System.out.println("userName"+userName+">>>>>"+"passWord"+passWord);
if("admin".equals(userName)){
request.getRequestDispatcher("fail.html").forward(request, response);
}else{
request.getRequestDispatcher("success.html").forward(request, response);
}
}
b) 重定向 :客户端向Servlet发送一个请求后,经过当前的Servlet方法后,会向服务器再一次发送请求,重新定向到指定的URL,也就是说,在这个过程中,Servlet要向服务器请求两次,才能转到请求的URL。
i. 实例:
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException , IOException{
// System.out.println("dopost 执行post方法>>>>>");
String userName = request.getParameter("userName");
String passWord = request.getParameter("password");
// System.out.println("userName"+userName+">>>>>"+"passWord"+passWord);
if("admin".equals(userName)){
response.sendRedirect("fail.html");
}else{
response.sendRedirect("success.html");
}
}
c)重定向与请求转发的区别:
地址
请求转发:
http://192.168.1.4:8080/web-servlet/
http://192.168.1.4:8080/web-servlet/sendServlet
重定向:
http://192.168.1.4:8080/web-servlet/
http://192.168.1.4:8080/web-servlet/fail.html
3、Servlet实例化/初始化参数传递
a) 可以通过在web.xml中配置参数来传递参数
b) 实例:
1):配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID">
<display-name>web-servlet</display-name>
<!-- 配置Servlet名字 -->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.ittx.web.servlet.HelloServlet</servlet-class>
</servlet>
<!-- 配置Servlet访问路径 -->
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SendServlet</servlet-name>
<servlet-class>com.ittx.web.servlet.SendServlet</servlet-class>
<!-- 配置参数 -->
<init-param>
<!-- 用户名参数 -->
<param-name>userName</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<!-- 密码参数 -->
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
<!-- 设置加载顺序,数字由小到大,依次后排 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SendServlet</servlet-name>
<url-pattern>/sendServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>hello2.html</welcome-file>
</welcome-file-list>
</web-app>
2)Servlet代码
public void init(ServletConfig config) throws ServletException{
System.out.println("init 初始化servlet方法>>>>>>>>");
String name = config.getInitParameter("userName");
String password = config.getInitParameter("password");
System.out.println("name"+name+">>>>>"+"passWord"+password);
}