JavaEE的Servlet核心API如何使用
这篇文章主要介绍了JavaEE的Servlet核心API如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaEE的Servlet核心API如何使用文章都会有所收获,下面我们一起来看看吧。
10年积累的成都网站设计、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有萧山免费网站建设让你可以放心的选择与我们合作。
一、核心API简介
1、Servlet执行流程
Servlet是JavaWeb的三大组件之一(Servlet、Filter、Listener),它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:接收请求数据;处理请求;完成响应。
2、核心API简介
API | 作用描述 |
---|---|
ServletConfig | 获取servlet初始化参数和servletContext对象。 |
ServletContext | 在整个Web应用的动态资源之间共享数据。 |
ServletRequest | 封装Http请求信息,在请求时创建。 |
ServletResponse | 封装Http响应信息,在请求时创建。 |
二、ServletConfig接口
1、接口简介
容器在初始化servlet时,为该servlet创建一个servletConfig对象,并将这个对象通过init()方法来传递并保存在此Servlet对象中。核心作用:1.获取初始化信息;2.获取ServletContext对象。
2、代码案例
配置文件
my-name cicada servletOneImpl com.node02.servlet.impl.ServletOneImpl servletOneImpl /servletOneImpl
API用法
public class ServletOneImpl implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { String servletName = servletConfig.getServletName() ; System.out.println("servletName="+servletName); String myName = servletConfig.getInitParameter("my-name") ; System.out.println("myName="+myName); Enumeration paramNames = servletConfig.getInitParameterNames() ; while (paramNames.hasMoreElements()){ String paramKey = String.valueOf(paramNames.nextElement()) ; String paramValue = servletConfig.getInitParameter(paramKey) ; System.out.println("paramKey="+paramKey+";paramValue="+paramValue); } ServletContext servletContext = servletConfig.getServletContext() ; servletContext.setAttribute("cicada","smile"); } }
三、ServletContext接口
1、接口简介
一个项目只有一个ServletContext对象,可以在多个Servlet中来获取这个对象,使用它可以给多个Servlet传递数据,该对象在Tomcat启动时就创建,在Tomcat关闭时才会销毁!作用是在整个Web应用的动态资源之间共享数据。
获取方式
1、ServletConfig#getServletContext(); 2、GenericServlet#getServletContext(); 3、HttpSession#getServletContext() 4、ServletContextEvent#getServletContext()
2、四大域对象
ServletContext是JavaWeb四大域对象之一:
1、PageContext; 2、ServletRequest; 3、HttpSession; 4、ServletContext;
所有域对象都有存取数据的功能,因为域对象内部有一个Map,用来存储数据。
3、代码案例
配置文件
my-blog 2019-11-19 servletTwoImpl com.node02.servlet.impl.ServletTwoImpl servletTwoImpl /servletTwoImpl
API用法
public class ServletTwoImpl extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); // 1、参数传递 ServletContext servletContext = this.getServletContext() ; String value = String.valueOf(servletContext.getAttribute("cicada")) ; System.out.println("value="+value); // 2、获取初始化参数 String myBlog = servletContext.getInitParameter("my-blog") ; System.out.println("myBlog="+myBlog); // 3、获取应用信息 String servletContextName = servletContext.getServletContextName() ; System.out.println("servletContextName="+servletContextName); // 4、获取路径 String pathOne = servletContext.getRealPath("/") ; String pathTwo = servletContext.getRealPath("/WEB-INF/") ; System.out.println("pathOne="+pathOne+";pathTwo="+pathTwo); response.getWriter().print("执行:doGet; value:"+value); } }
四、ServletRequest接口
1、接口简介
HttpServletRequest接口继承ServletRequest接口,用于封装请求信息,该对象在用户每次请求servlet时创建并传入servlet的service()方法,在该方法中,传入的servletRequest将会被强制转化为HttpservletRequest对象来进行HTTP请求信息的处理。核心作用:1.获取请求报文信息;2.获取网络连接信息;3.获取请求域属性信息。
2、代码案例
配置文件
servletThreeImpl com.node02.servlet.impl.ServletThreeImpl servletThreeImpl /servletThreeImpl
API用法
public class ServletThreeImpl extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // http://localhost:6003/servletThreeImpl?myName=cicada String method = request.getMethod(); System.out.println("method="+method); // GET String requestURL = request.getRequestURL().toString(); // http://localhost:6003/servletThreeImpl System.out.println("requestURL="+requestURL); String requestURI = request.getRequestURI(); System.out.println("requestURI="+requestURI); // /servletThreeImpl String queryString = request.getQueryString() ; System.out.println("queryString="+queryString); // myName=cicada String myName = request.getParameter("myName"); System.out.println("myName="+myName); // cicada } }
五、ServletResponse接口
1、接口简介
HttpServletResponse继承自ServletResponse,封装了Http响应信息。客户端每个请求,服务器都会创建一个response对象,并传入给Servlet.service()方法。核心作用:1.设置响应头信息;2.发送状态码;3.设置响应正文;4.重定向;
2、代码案例
配置文件
servletFourImpl com.node02.servlet.impl.ServletFourImpl servletFourImpl /servletFourImpl
API用法
public class ServletFourImpl extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8") ; response.setCharacterEncoding("UTF-8"); response.setStatus(200) ; response.getWriter().print("Hello,知了"); } }
3、转发和重定向
转发
服务器端进行的页面跳转的控制 ;
request.getRequestDispatcher("/转发地址").forward(request, response);
重定向
服务端响应跳转信息,浏览器端进行的页面跳转 ;
response.sendRedirect("重定向地址");
转发和重定向对比
区别 | 转发 | 重定向 |
---|---|---|
地址栏 | 不变 | 变化 |
跳转 | 服务端跳转 | 浏览器端跳转 |
请求次数 | 一次 | 两次 |
域中数据 | 不会丢失 |
丢失 |
关于“JavaEE的Servlet核心API如何使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“JavaEE的Servlet核心API如何使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。
本文标题:JavaEE的Servlet核心API如何使用
链接地址:http://cdiso.cn/article/jpcico.html