当前位置: 首页 > article >正文

JSP中Servlet的使用(笔记)

JSP虽然为表示层中的视图层,但其是基于控制层的Servlet实现。

 

一、创建Servlet类

自己配置

1.Servlet基本格式

需继承HTTPServlet,同时我们需要做的仅为重载doGet与doPost方法。

doGet处理所有Get方式请求。

doPost处理所有Post方式请求。

(需检查该包是否在已buildpath的文件内,同上篇Eclipse中jsp与数据库基本(笔记)中导入JavaAPI注意内容一样)

package webtest;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class WelcomeServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{System.out.print("doGet\n");}protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{System.out.print("doPost\n");}
}

2. 2.5版本配置:同时需要在web.xml中添加,下图代码

  1)对于servlet-mapping部分,其中url-pattern的WelcomeServlet为对应的请求链接名称,如当有下图写法时,自动将连接名称换为servlet-name中的名称。

 2)之后会跳转到servlet部分,查找相同的servlet-name名称,而后转换为servlet-class的相对路径(同页面导入类/包一样写法)。

注意: 修改后请不要忘记重启服务器。此外,有时阿帕奇下项目的web.xml会被Eclipse下项目覆盖,有时又没有及时覆盖。

3. 3.0版本配置:直接在Java文件中编写@webServlet

package webtest;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@webServlet("/WelcomeServlet")//此处为url-parttern
public class WelcomeServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{System.out.print("doGet\n");}@Overrideprotected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{System.out.print("doPost\n");}
}

通过请求链接的名称扫描注解webServlet,匹配成功,则执行该类。

Eclipse自动配置

直接创建即可

  

测试能否使用

可以通过form方法测试能否使用。

二、服务器启动时自动执行init()

不修改默认访问时初始化。

2.5配置方式

通过在web.xml中加入以下代码段即可,数字代表第几个执行。

 为查看效果重载init函数

	@Overridepublic void init()throws ServletException{System.out.println("init");}
}

注意: 修改后请不要忘记重启服务器。此外,有时阿帕奇下项目的web.xml会被Eclipse下项目覆盖,有时又没有及时覆盖。

 3.0配置方式

修改webServlet

@WebServlet(value ="/WelcomeServlet",loadOnStartup = 1)

三、Servlet继承关系

本篇为基于HTTP协议下的Servlet,上为父类,下为子类。

四、初始化值的获取

ServletConfig 接口

ServletContext getServletContext():获取Servlet上下文对象

  • ServletContextapplication对象所属的类,因此拥有方法与application一致
  • 要注意的是,该方法在ServletConfig为抽象方法,具体的实现是在GenericServlet

String getInitParameter(String name);在当前Servlet范围内,获取名为name的初始化参数

  • 对于ServletContext类中的String getInitParameter(String name):获取的为Web容器范围内的,命名为name的初始化参数。与此处方法仅是名字相同。

为了获取初始化值,同时比较两个getInitParameter方法,我们做以下准备。

2.5版本

1.此处于web.xml中设置web容器内的参数,以此在服务器启动时就拥有一个全局参数。

2.此处于web.xml中设置servlet容器内的参数,以此在服务器启动时就servlet就拥有一个变量。

注意: 修改后请不要忘记重启服务器。此外,有时阿帕奇下项目的web.xml会被Eclipse下项目覆盖,有时又没有及时覆盖。

3.0版本

web容器内的参数仍需要在web.xml中设置

servlet容器内参数需要在webServlet中添加

@WebServlet(value ="/WelcomeServlet",loadOnStartup = 1,initParams= {@WebInitParam(name = "ServletParamName",value = "servletvalue..")})

在XML中设置的变量自然也可以在eclipse中直接查看设置成功与否

执行代码如下

@Overridepublic void init()throws ServletException{System.out.println("init");//获取当前Servlet的初始化参数String value = super.getInitParameter("ServletParamName");System.out.println("当前Servlet的参数为ServletParamName:"+value);ServletContext servletContext = super.getServletContext();String globalValue = servletContext.getInitParameter("GlobalParam");System.out.println("当前Servlet的参数为GlobalParam:"+ globalValue);}

注意,如果没有成功读取,在确认了自己书写无误情况下,尝试清除服务器缓存或查看自己修改的web.xml是否是执行的对应的web.xml(eclipse如果不修改,新建项目时会默认在meta文件中重新生成一个镜像,其中的web仅在生成时被拷贝,之后修改互不干扰)

五、请求的处理

Service(ServletRequset req,ServletResponse res):处理请求。

  • 该方法为Servlet提供,但是在HTTPService处被转成HTTP协议下的Service,即Service(HttpServletRequest req,HttpServletResponse res,同时将请求分类为doGet(),doPost()等方法。

  • 此外Service在GenericServlet中为空实现。

  • HttpServletRequestrequest对象所属的类,因此拥有方法与request一致

  • ServletResponseresponse对象所属的类,因此拥有方法与response一致

http://www.lryc.cn/news/2417450.html

相关文章:

  • MSN登陆不上解决方式
  • 华为鸿蒙第一批手机是哪一款,华为鸿蒙第一批名单
  • 华尔街英语学习软件_华尔街英语核心课程功能升级 让学员学习之旅更高效
  • 距离除夕倒计时 距离2022年除夕还有多少天用便签计算
  • 推荐的五款市面上常用的免费CMS建站系统
  • 台风路径1-通过python3.7.0获取台风路径历史轨迹点数据并插入到postgresql数据库中
  • 基于51单片机智能饭店餐厅点菜机器WiFi无线设计19-385
  • vs安装包哪里有mfc_VS 2008和2010的MFC功能包
  • bash破壳漏洞分析(二)
  • 织梦模板使用方法-安装教程
  • 信息安全系统和安全体系
  • kindle电子书和新闻推送及RSS资源…
  • pci-pcie总线序号分配
  • 安装Red Hat 8Linux操作系统
  • 突破MAC地址过滤连接网络
  • 如何使用W5300实现ADSL连接(一)
  • 基于AD7705的32路AD采集
  • Windows动态桌面原理
  • 旗胜限价房让我深刻体会到我很傻很天真
  • crash调试linux dump信息
  • UT AUSTINVILLA 3D
  • 主板维修从入门到精通
  • activity启动模式应用,如FLAG_ACTIVITY_CLEAR_TOP
  • 分支语句——switch-case
  • 毕业论文中的图表目录
  • 单片机定时器中断(之中断概念)
  • 使用nlite制作集成驱动windows安装光盘及实践心得
  • 关于sqlserver中SqlParameter的用法注意事项
  • ccbp 知识点
  • 服务器出现大量 TIME_WAIT,如何解决