前面学过了在IDEA中启动一个tomcat
web服务器,其中简单提到了一句如何导入Servlet
包,接下学习一下怎么使用Servlet
。
首先先创建一个Java类,该类需要继承HttpServlet
类,然后重写doGet/doPost
方法,来处理get和post请求。
public class Main extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
System.out.println("这是一个get请求");
}
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {}
}
写完了处理请求的逻辑之后,我们怎么让这个类处理对应的请求呢?需要在web.xml
中配置一下。<servlet>
标签下就是我们对应的java类。<servlet-mapping>
标签下设置我们java类要处理哪个请求,也就是请求url。
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>Main</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
Servlet生命周期
Servlet的生命周期大致分为三个阶段,
-
初始化:调用init()方法
-
处理请求:调用service()方法,service方法根据请求方式调用doGet或者doPost
-
销毁:在服务器停止的时候执行destroy()方法。
根据请求参数跳转页面
我们重写doPost方法,通过req.getParameter
方法获取请求参数进行验证,然后通过res.sendRedirect()
方法实现页面的重定向。
public void doPost(HttpServletRequest req, HttpServletResponse res){
String user = req.getParameter("user");
String pwd = req.getParameter("pwd");
if(user.equals("admin") && pwd.equals("admin")){
try {
res.sendRedirect(req.getContextPath() + "/loginSuccess.jsp");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在init方法获取初始化参数
前面说想要请求可以被对应的java代码处理,需要配置一下xml文件,其实在在xml文件中也可以配置初始值,然后在Servlet中的init方法中获取。
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>Main</servlet-class>
<init-param>
<param-name>userName</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
通过getInitParameter()方法获取初试值
private String userName;
private String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void init() throws ServletException{
this.setUserName(this.getInitParameter("userName"));
this.setPassword(this.getInitParameter("password"));
}
网友评论