Servlet
下面的博客内容多半是我看尚硅谷视频学来的!
Servlet的生命周期
public class ServletTest implements Servlet {
public ServletTest(){
System.out.println("1.构造器方法");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2.初始化方法");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Servlet程序被访问");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("销毁方法");
}
}
//输出结果为:
//1.构造器方法
//2.初始化方法
//Servlet程序被访问
//Servlet程序被访问
//Servlet程序被访问
//Servlet程序被访问
//销毁方法
构造器方法和初始化方法只在第一次访问Servlet程序时调用一次,若多次访问,只会调用service方法,结束时调用destroy()方法
但是在开发中,我们一般不会采用这种方法,而是通过继承HttpServlet类来实现,其实上面的也没有白看,可以了解一下,🤭
ServletConfig类
ServletConfig类从字面上可以看出是Servlet程序的配置信息类
Servlet程序和ServletConfig对象都是Tomcat服务器创建,我们负责使用
Servlet程序默认是第一次访问时创建,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Servlet2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
//servletConfig的使用
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config); //如果重写这个方法,就需要这行代码来保存ServletConfig对象
//Servlet程序默认是第一次访问时创建,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象
//意思是一个Servlet程序对应一个ServletConfig对象 其他的ServletConfig对象是不能访问与其不对应的Servlet程序
System.out.println("2.初始化方法");
//1.可以获取Servlet程序的别名servlet-name的值
System.out.println("ServletTest程序的别名是:"+config.getServletName());
//2.获取初始化参数init-param
System.out.println("初始化参数username的值为:"+config.getInitParameter("username"));
//3.获取ServletContext对象
System.out.println(config.getServletContext());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
ServletContext
不能访问工程以外的资源
Base标签
base标签的作用就是设置页面相对路径工作是参照的地址
静态包含
动态包含
请求转发
Cookie
import com.gl.web.BaseServlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/session")
public class SessionSerlet extends BaseServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
CreatSession(req,resp);
}
protected void CreatSession(HttpServletRequest req, HttpServletResponse resp){
//创建和获取Session会话对象
HttpSession session = req.getSession();
//判断 当前Session会话是否是新创建出来的
boolean aNew = session.isNew();
System.out.println(aNew);
//获取session会话的唯一标识id
String id = session.getId();
System.out.println(id);
//向域对象中存值
req.getSession().setAttribute("key1","value1");
//获取值
Object key1 = req.getSession().getAttribute("key1");
System.out.println(key1);
}
}
Session和浏览器的技术关联
解决第二个和第三个问题就要用到验证码