21世纪,走进了信息时代,各种各样的软件层出不穷,但是总离不开程序开发,离不开程序开发语言,Java语言作为人们所熟知的一门语言,对于其有必要进行系统的学习。
Servet是Java的一个接口,用于定义网站前端数据与数据库数据进行交互所用到的方法规范,也就是后端,其运行在服务器上;
Servlet是一个接口,实现接口需要实现其未实现的抽象方法;其中init方法是在servlet初始化时调用,service是处理请求时调用,destroy方式是在服务器关闭时调用;
public class ServletDemo implements Servlet { @Override public void init(ServletConfig config) throws ServletException { System.out.println("--init--"); } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("--service--"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { System.out.println("--destroy--"); } }
除了Servlet实现类写完后,还需要在WEB-INF下的web.xml进行配置,一个servlet可以配置多个servlet-mapping
<!--一个servlet与其对应的servlet-mapping共同构成一组映射,将url映射为对应的Servlet类--> <servlet> <servlet-name>demo</servlet-name><!--配置servlet的名称,即别名,用于区分不同的servlet--> <servlet-class>com.company.project.servlet.ServletDemo</servlet-class><!--servlet类对应的全类名--> </servlet> <servlet-mapping> <servlet-name>demo</servlet-name><!--配置需要映射的servlet名称--> <url-pattern>/demo</url-pattern><!--配置映射的url--> </servlet-mapping>
或者使用注解的方式,即在Servlet实现类上使用WebServlet注解
//name与上面定义的name一样,用于区别,urlPatterns即上面的映射url @WebServlet(name = "demo",urlPatterns = "/demo") public class ServletDemo implements Servlet { }
配置结束,则可以运行项目,在浏览器输入localhost:8080/JavaWebDemo/demo进行访问,可以在控制台看到其输出:
在访问其对应的映射url时,其第一次访问,进行了初始化,接着执行了service中的代码;
在服务器关闭时,执行了destroy方法
HttpServlet类继承自GenericServlet类,而GenericServlet实现了Servlet接口;
在方式一中可以看到其共有5个成员方法需要重写,但是实际起作用,用于数据交互的主要是service方法,重写5个方法过于繁杂,故可以选择继承HttpServlet:
@WebServlet(name = "login", urlPatterns = "/login") public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("执行了doGet方法--"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("执行了doPost方法--"); } }
继承HttpServlet后,可以选择重写其方法,其中有Servlet中未包装的service方法,以及包装过后的一系列doXxx方法,一般网站请求都为get或者post,故重写其doGet与doPost就基本可以满足需求;
运行程序,在浏览器地址栏输入localhost:8080/JavaWebDemo/login
此时,会执行doGet方法:
在webapp下新建一个login.html
<html lang="en"> <head> <meta charset="UTF-8"> <title>login</title> </head> <body> <div align="center"> <form action="login" method="post"> 用户名:<input type="text" name="username" value="" placeholder="请输入用户名"><br/> 密码:<input type="text" name="password" value="" placeholder="请输入密码"><br/> <input type="submit" value="登录"><br/> </form> </div> </body> </html>
在浏览器访问localhost:8080/JavaWebDemo/login.html
点击登录,即可看到:
笔记如有错误,遗漏之处,欢迎指正!