Servlet 基础
- Servlet 是一个java程序,是在服务器上运行以处理客户端请求并做出响应的程序。
- Servlet 的核心是javax.servlet.Servlet接口,所有的Servlet 必须实现这个接口。
- 自定义的Servlet 大都是从GenericServlet 和HttpServlet 类进行扩展来实现。
- HttpServlet 可以用来处理Http 请求。
- Http 的请求方式包括DELETE,GET,OPTIONS,POST,PUT,TRACE。
- HttpServlet 中与这些请求方式相对应的方法:
(1)doHead():用来处理HTTP客户端的HEAD请求
(2)doGet():如果HTTP客户端发给服务器的请求是GET方式,这个方法将被service 方法调用
(3)doPOST():如果HTTP客户端发给服务器的请求是POST方式,这个方法将被service 方法调用
(4)doDelete():用来处理HTTP客户端的DELETE请求
(5)doOptions():用来处理HTTP客户端的OPTIONS请求
此外还有doPut()方法和doTrace()方法,最常用的方法就是doGet()方法和doPOST()方法。
servlet 的生命周期实例:
测试代码:
package cn.zbw;
import javax.servlet.*;
import java.io.IOException;
public class Servlet01 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("服务器运行 初始化init 执行一次");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("服务service方法 servlet下面");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("服务器关闭destroy 执行一次");
}
}
xml文件:
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>cn.zbw.Servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/zbw</url-pattern>
</servlet-mapping>
jsp文件:
<html>
<head>
<title>测试服务器是否正常运行</title>
</head>
<body>
我爱你!小兔子!
</body>
</html>
jsp文件测试结果:
生命周期结果:
Servlet的生命周期:首先实例化,初始化 init 方法只运行一次,调用service 方法,根据请求的方式调用相对应的方法,关闭服务器之后,调用destory 方法。
Servlet 引用实例实现登录:
引用:
package cn.zbw;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/login")
public class ServletLogin extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
if (username.equals("zbw") && pwd.equals("123")){
response.sendRedirect("success.jsp");
}else {
response.sendRedirect("error.jsp");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
jsp文件:
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="login" method="post">
账号<input type="text" name="username">
密码<input type="password" name="pwd">
<input type="submit" value="登录">
</form>
</body>
</html>
success 文件:
<html>
<head>
<title>Success</title>
</head>
<body>
登录成功
</body>
</html>
error 文件:
<html>
<head>
<title>Error</title>
</head>
<body>
登录失败
</body>
</html>
结果是: