JavaWeb–03
前言
21世纪,走进了信息时代,各种各样的软件层出不穷,但是总离不开程序开发,离不开程序开发语言,Java语言作为人们所熟知的一门语言,对于其有必要进行系统的学习。
Servlet
Servet是Java的一个接口,用于定义网站前端数据与数据库数据进行交互所用到的方法规
范,也就是后端,其运行在服务器上;
创建第一个Servlet
(1).方式一,实现Servlet接口
Servlet是一个接口,实现接口需要实现其未实现的抽象方法;其中init方法是在servle
t初始化时调用,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方法
(2).方式二,继承HttpServlet类
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
点击登录,即可看到:
笔记如有错误,遗漏之处,欢迎指正!