# servletDemo **Repository Path**: nieps/servlet-demo ## Basic Information - **Project Name**: servletDemo - **Description**: 209 servlet 案例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-05 - **Last Updated**: 2023-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Servlet笔记 ## 介绍 javaweb jsp +servlet Spring MVC DispacherServlet druid StatServlet 描述spring mvc的工作流程 三大核心 : * Servlet 服务端的小程序 接收用户的请求并响应 * filter 过虑器 登录验证 /权限验证/日志记录/ 编码过滤器 拦截器 * listener监听 存储: * session 用户登录的信息 存储到服务器 > 认证: > > * 基础认证 > * session/cookie认证 > * token认证 > * oauth 授权认证 * cookie 保存到客户端 java类的入口 main方法 servlet 没有main方法 web动态开发: asp php jsp .net c# php : lamp linux apache mysql php jsp: java server page ----前身是 servlet jsp语法: html+java 混合编写 <% java代码 %> <%! 声明变量 方法 %> jsp在访问: 先将jsp---转换成----servlet ---运行servlet servlet两个分支: * javax.servlet apache 下 最高版本4.0.1 tomcat版本号应该9.0.x版本之前的 * jakatra.servlet 版本4.0.2~ 6.0.0 tomcat版本10.0以上 [Apache软件基金会](https://baike.baidu.com/item/Apache软件基金会/2912769?fromModule=lemma_inlink)(Apache Software Foundation,简称 [ASF](https://baike.baidu.com/item/ASF/3575171?fromModule=lemma_inlink))是专门为运作一个[开源软件](https://baike.baidu.com/item/开源软件/8105369?fromModule=lemma_inlink)项目的 Apache 的团体提供支持的非盈利性组织,这个开源软件的项目就是 Apache 项目。 apache是一个开源的组织名。后来制定了一个以apache命名的开源协议。 jakarta是apache组织下的一套Java解决方案的开源软件的名称,它包括了很多子项目。 > - Spring Framework 6.0.x: Jakarta EE 9-10 (jakarta namespace) > - Spring Framework 5.3.x: Java EE 7-8 (javax namespace) > > The last specification version supported by Spring Framework 5.3.x is the javax-based Java EE 8 (Servlet 4.0, JPA 2.2, Bean Validation 2.0). As of Spring Framework 6.0, the minimum is Jakarta EE 9 (Servlet 5.0, JPA 3.0, Bean Validation 3.0), with the latest Jakarta EE 10 (Servlet 6.0, JPA 3.1) recommended. 服务器: * Apache phphe * Nginx 代理 /反向代理 * IIS .net Servlet 容器就是 Servlet 代码的运行环境(运行时),它除了实现 Servlet 规范定义的各种接口和类,为 Servlet 的运行提供底层支持,还需要管理由用户编写的 Servlet 类,比如实例化类(创建对象)、调用方法、销毁类等。 jboss /jetty / weblogic tomcat: ## Servlet接口 方法: * init 初始化方法 可以获取servlet配置信息 servlet实例创建后调用初始化方法 只会执行一次 * service 核心方法 用于处理用户请求并响应的 运行状态 (重复接收用户请求并响应) * destroy 销毁方法 servlet实例 销毁的时候或者服务器关闭、重启时 执行 只执行一 次 ## GenericServlet抽象类 ## HttpServlet实现类 在开发中使用 ![image-20230505105027760](assets/image-20230505105027760.png) ## xml 是可扩展的描述语言,通常用来描述数据 ajax 异步的javascript和xml ~~~xml 张三 23 ~~~ xml验证格式 : * dtd DTD为英文Document Type Definition,中文意思为“文档类定义”。 DTD是一套关于标记的语法规则,它说明了在XML中哪些标记可以使用、哪些标记具有属性以及使用标记出现的顺序是什么。 ​ servlet dtd ~~~dtd ~~~ 在xml文件 中,元素定义的顺应必须与声明顺序保持一致。 关于元素后面的符号: * ? 代表元素最多出现一次 * \* 代表元素 可以出现任意次 * \+ 代表元素最少出现一次 * schema验证 **Schema**,即**XML Schema**,**XSD (XML Schema Definition)**是[W3C](https://baike.baidu.com/item/W3C)于2001年5月发布的推荐标准,指出如何形式描述[XML文档](https://baike.baidu.com/item/XML文档/10585916)的元素。XSD是许多XML Schema 语言中的一支。XSD是首先分离于XML本身的schema语言,故获取W3C的推荐地位 ![image-20230505112304112](assets/image-20230505112304112.png) ## ServletConfig配置类 获取servlet配置信息的 * getInitParameter 根据初始参数名 获取 参数值 ## servlet实例化 * 在servlet访问的时候实例化 * 在servlet容器启动时实例化 > 在web.xml中通过子元素load-on-startup配置 > > 在@WebServlet注解中通过注解属性loadOnStartup配置 > > 1. 它的取值必须是一个整数; > 2. 当值小于 0 或者没有指定时,则表示容器在该 Servlet 被首次请求时才会被加载; > 3. 当值大于 0 或等于 0 时,表示容器在启动时就加载并初始化该 Servlet,取值越小,优先级越高; > 4. 当取值相同时,容器就会自行选择顺序进行加载。 ## 生命周期 1. 初始化阶段 init 2. 运行时阶段 service 3. 销毁阶段 destroy ssm : struts1 .do .action .niu ## 域对象 * request 请求作用域 HttpServletRequest * session会话作用域 HttpSession > 获取方式: > > * 通过request获取 * application 全局作用域 ![image-20230506110415684](assets/image-20230506110415684.png) ### HttpServletRequest 获取用户请求的信息 常用方法: * getMethod() 获取请求方法 * getRemoteAddr() 获取客户端ip 地址 * getHeader(String name) 获取指定请求头的值 ### jsp1.0语法 * 脚本 <% java代码 %> * 声明 <%! 声明变量 或方法 %> * 表达式 <%= %> ### jsp内置对象 * page 代表当前页面 相当于this * request 请求作用域 * session 会话作用域 * application 全局作用域 * out 页面输出流 * exception 异常 * config 配置 * pageContext 页面作用域 * response响应对象 ## HttpServletResponse ## 会话技术 如何去做用户登录? session 保持用户登录状态 文件上传通常传到部署应用的根目录。 ## Filter过滤器 拦截请求 登录验证、权限验证、日志记录.... ssh struts1 ---------ActionServlet struts2 ------webwork spring mvc ------dispatcherServlet mvc: m:业务层 c:控制层 servlet v:视图 jsp jsp1.0 JSP2.0 * el表达式 ${} <%=%> * jstl 标签 > - **核心标签 ** c > - **格式化标签** fmt > - **SQL 标签** sql > - **XML 标签** > - **JSTL 函数** mybatis