java ee api是什么_JavaEE基础(02):Servlet核心API用法详解

一、核心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("重定向地址");

转发和重定向对比

区别

转发

重定向

地址栏

不变

变化

跳转

服务端跳转

浏览器端跳转

请求次数

一次

两次

域中数据

不会丢失

丢失

六、源代码地址

GitHub·地址

https://github.com/cicadasmile/java-base-parent

GitEE·地址

https://gitee.com/cicadasmile/java-base-parent

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值