Servlet基础


一、什么是Servlet

Servlet是在服务器端运行的Java程序,可以接受客户端请求并做出响应
在这里插入图片描述
Servlet可以动态生成HTML内容对客户端进行响应
在这里插入图片描述
Servlet与JSP都可以动态生成HTML内容,二者之间的关系:
在这里插入图片描述

二、Servlet

1、Servlet体系结构

在这里插入图片描述

1、Servlet接口

定义了所有Servlet需要实现的方法

在这里插入图片描述

2、GenericServlet抽象类

提供了Servlet与ServletConfig接口方法的默认实现(service方法除外)
在这里插入图片描述

3、HttpServlet抽象类

继承自GenericServlet
处理HTTP协议的请求和响应

在这里插入图片描述

4、ServletConfig接口

在Servlet初始化过程中获取配置信息
一个Servlet只有一个ServletConfig对象

在这里插入图片描述

5、ServletContext接口

获取Web应用上下文,与Servlet容器进行通信

在这里插入图片描述

2、请求、响应相关接口

在这里插入图片描述

1、ServletRequest接口

获取客户端请求的数据
在这里插入图片描述

2、HttpServletRequest接口

除了继承ServletRequest接口中的方法,还增加了一些用于读取HTTP请求信息的方法
在这里插入图片描述

3、ServletResponse接口

设置响应参数和向客户端发送响应数据
在这里插入图片描述

4、HttpServletResponse接口

除了继承ServletResponse接口中的方法,还增加了适用于HTTP响应的新方法
在这里插入图片描述

3、Servlet的应用

创建Servlet

  • 继承HttpServlet
  • 重写doPost()或doGet()方法
    部署Servlet
  • 编译Servlet到/WEB-INF/classes目录
  • 编辑部署描述文件web.xml
<servlet>
<servlet-mapping>
	<url-pattern>
......

启动Tomcat,访问Servlet

三、使用Servlet实现控制器

修改控制器

在这里插入图片描述
在这里插入图片描述
示例:

public  class  TopicServlet  extends  HttpServlet  {
    public  void  doGet( HttpServletRequest  request,  HttpServletResponse response )  throws  ServletException,  IOException  {
	... ...	
	String  opr  =  request.getParameter( "opr" );
	TopicsService  topicsService  =  new  TopicsServiceImpl();
	String  contextPath = request.getContextPath();
	if ( opr.equals( "list" ) ) {  //查找所有主题	
	     List<Topic>  list = topicsService.getAllTopics();	
	     request.setAttribute( "list", list );	 
	     request.getRequestDispatcher (
                             contextPath + "/newspages/topic_list.jsp" ) 
                            .forward( request, response );
	}  
         … …
    }
}


<div id="opt_list">
    <ul>
        <li><a href="../util/news_control.jsp?opr=findTopics">添加新闻</a></li>
        <li><a href="../util/news_control.jsp?opr=list">编辑新闻</a></li>
        <li><a href="../newspages/topic_add.jsp">添加主题</a></li>
        <li><a href="../util/topics?opr=list">编辑主题</a></li>
    </ul>
</div>

四、Servlet的生命周期

生命周期的各个阶段

在这里插入图片描述
Servlet的生命周期

在这里插入图片描述

五、获取Servlet初始化参数

Servlet初始化参数配置

<web-app>
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>demo.servlet.HelloServlet</servlet-class>
        <init-param>
            <param-name>initParam</param-name>
            <param-value>Hello Servlet</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>
</web-app>

获取初始化参数

public void doGet ( HttpServletRequest  request, HttpServletResponse  response ) throws  ServletException,  IOException  {
        System.out.println("处理请求时,doGet()方法被调用。");
        String initParam = getInitParameter( "initParam" );
        System.out.println(initParam);
}//根据名称进行读取

六、获取Servlet上下文参数

配置上下文

<web-app>
    <context-param>
        <param-name>contextParam</param-name><!--初始化参数的名字 -->
        <param-value>Hello Servlet</param-value><!--初始化参数的值 -->
    </context-param>
    <!--省略其他配置-->
</web-app>

读取Servlet上下文

public  class  HelloServlet  extends  HttpServlet  {
	// …省略其他代码
	public  void  doGet ( HttpServletRequest  request, HttpServletResponse  response ) throws  ServletException,  IOException  {
		System.out.println("处理请求时,doGet()方法被调用。");
		String  initParam = getInitParameter( "initParam" );
		String  contextParam = this.getServletContext().getInitParameter( "contextParam" );//根据参数名称进行读取	
		System.out.println("Servlet初始化参数" + initParam);
		System.out.println("系统初始化参数" + contextParam);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.刘★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值