首先,在写这个之前,要了解到,无框架javaweb在后端现实应用场景中,基本不会用到,所以我并不打算研究javaweb特别高深的技术,而是记录javaweb中各控件的原理,为之后使用框架打打基础。
1.创建第一个servlet
首先是创建一个j2ee项目,导入servlet-api.jar包。
在idea中new project,选择web application即可创建项目
在src创建一个继承了HttpServlet的Servlet,叫HelloServlet,代码如下
import java.io.IOException;
import java.util.Date;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response){
try {
response.getWriter().println("
Hello Servlet!
");response.getWriter().println(new Date().toLocaleString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这就是一个实现了doGet方法的Servlet
然后在项目的web/WEB-INF目录下创建 web.xml,然后把这个servlet和/hello地址映射起来
如下所示
一般
与
在WEB-INF下创建classes目录,把项目的class文件输出由原来的 bin 设置到 web/WEB-INF/classes下
启动项目,就可以在项目对应的/hello路径下看到Servlet的效果了。
2.servlet能干什么
继承HTTPServlet的servlet,会继承三个方法,
doGet,doPost,service
doGet,doPost很好理解,就是Get方法和Post方法如何处理request,response
在执行doGet()或者doPost()之前,都会先执行service(),service方法是用来判断,到底该调用doGet()还是doPost()
servlet中的常用方法:
request.getParameter 获取request中的参数
response.getWriter 获取response中的writer,写入html信息。
request.getRequestDispatcher 请求转发
response.sendRedirect 重定向
关于请求转发和重定向的区别可以看博文
https://blog.csdn.net/h2503652646/article/details/83661347
请求转发是一个请求一次响应,而重定向是两次请求两次响应。
3.servlet生命周期
Servlet的生命周期由五部分组成 实例化,初始化,提供服务,销毁,被回收
实例化:当对应的servlet被调用的时候,该Servlet就会被实例化,Servlet是单实例的,只会构造一次,第二次调用时候不再构造
初始化:同实例化,也只会构造一次
上面两个可以通过在servlet中实现构造方法和init方法去观察对应结果
提供服务:那就是调用servlet中的service方法呗
销毁:关闭tomcat的时候就进行销毁
回收:垃圾回收gc