servlet

SpringServletContainerInitializer

旧巷老猫 提交于 2019-12-16 09:26:58
之所以对这个接口感兴趣, 主要是因为最近在研究Spring-Session. 在网上查找了相关的配置方式之后, 发现基本都是对Servlet3.0环境下ServletContainerInitializer(简称SCI)接口的使用. 1. 定义 // 完整命名: javax.servlet.ServletContainerInitializer public interface ServletContainerInitializer { public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException; } 1 2 3 4 5 2. 概述 ServletContainerInitializer 是 Servlet 3.0 新增的一个接口,主要用于在容器启动阶段通过编程风格注册Filter, Servlet以及Listener,以取代通过web.xml配置注册。这样就利于开发内聚的web应用框架. 我们以SpringMVC举例, servlet3.0之前我们需要在web.xml中依据Spring的规范新建一堆配置。这样就相当于将框架和容器紧耦合了。而在3.x后注册的功能内聚到Spring里,Spring-web就变成一个纯粹的即插即用的组件,不用依据应用环境定义一套新的配置。 3.

什么是servlet ,servlet的作用

纵饮孤独 提交于 2019-12-16 07:27:06
什么是servlet ,servlet的作用 1、简单来说servlet是运行在服务器上的java程序 servlet由servlet容器管理,servlet容器也叫 servlet引擎,是servlet的运行环境,给发送的请求和响应之上提供网络服务 2、servlet的作用 通俗来讲servlet专门用来接收客户端的请求,专门接收客户端的请求数据,然后调用底层service处理数据并生成结果 浏览器http请求------》tomcat服务器-------》到达servlet-----》执行doget,dopost方法----》返回数据 <1>客户端发送请求到服务器端 <2>服务器将请求信息发送至Servlet <3>Servlet生成响应内容并将其传给服务器。 <4>服务器将响应返回给客户端。 3、servlet里的三大作用域: request(请求):它的作用范围是一次请求和响应,是三个作用域中最小的。 session(会话):它的作用比request要大一点,一次会话过程中,它的作用域就一直存在,(默认是30分钟) servletcontext:它作用范围最大,作用于整个服务器中。(Application) 来源: CSDN 作者: cherry_vincent 链接: https://blog.csdn.net/cherry_vicent/article/details

在servlet主要功能是什么?

放肆的年华 提交于 2019-12-15 20:07:56
MVC框架 里头的C,Controller的角色,当客户从页面传入参数请求的时候,发送到Servlet,Servlet根据请求的不同,分配给不同的业务代码完成业务操作,操作完成后,Servlet返回一个结果到页面上面去。 最简单的 MVC框架 模型里面,Servlet就像是人的大脑一样,其实它并没有做太多的业务,比方说要拿起一个杯子,大脑本身是不会拿的,但是大脑可以通过指挥手去拿。当你想拿起一个杯子的时候,就相当于客户端发送请求,你的大脑接收到你想拿起一个杯子,就相当于Servlet接受到客户的请求,然后Servlet分配工作给业务层,相当于大脑指挥手去做动作,手拿起杯子以后,你就感知到“哦,杯子已经拿起来了”,相当于Servlet把业务结果反馈给页面客户端。 ------ servlet是连接前台和后台service层的桥梁,是数据的中转站。得到并处理前台的参数request.getParameter("x")之后调用service层进行业务处理,调用完后再指定返回到的jsp或者其他操作。 来源: CSDN 作者: cherry_vincent 链接: https://blog.csdn.net/cherry_vicent/article/details/103548558

手写spring框架,帮你彻底了解spring的工作原理机制

依然范特西╮ 提交于 2019-12-15 17:59:17
在我们的日常工作中,经常会用到Spring、Spring Boot、Spring Cloud、Struts、Mybatis、Hibernate等开源框架,有了这些框架的诞生,平时的开发工作量也是变得越来越轻松,我们用 Spring Boot 分分钟可以新建一个Web项目。今天通过手写Spring框架,帮大家深入了解一下Spring的工作机制,文中涉及的代码只用来帮助大家理解Spring,不会在线上使用,有不严谨的地方还请大家掠过。 项目结构 框架部分实现 为了区分框架部分代码和业务部分代码,我们将这两部分分别划分在不同的包内 com.mars.demo 和 com.mars.framework,以便随后只扫描业务代码。 2. 这里是自己手写Spring框架,所以不会引入任何Spring项目相关的包。 3.由于是一个Web项目,所有我们需要引入 servlet-api 包,仅供编译器使用,所有配置 scope 为 provided。 新建一个Servlet 首先新建一个 HttpServlet 的实现类 MarsDispatcherServlet,用来接收请求。 public class MarsDispatcherServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req,

JAVAWEB入门第一篇

一世执手 提交于 2019-12-15 04:10:26
上一节我们学习了快速入门, 但是里面的问题是ServletDemo1里面既没有创建对象,又没有写方法,竟然就被执行了,为什么呢? 我们来分析一下Sevlet的执行原理 1.当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径 2.查找web.xml文件,是否有对应的<url-pattern>标签体内容 3.如果有,则再找到对应的<servlet-class>全类名 4.tomcat服务器,第一步将字节码文件加载进内存,并且创建其对象 5.调用其方法 Servlet中的生命周期: 1.被创建:执行init方法,只执行一次 疑问:默认情况下,第一次被访问时,Servlet被创建 可以配置执行Servlet的创建时机 在<servlet>标签下配置 修改为-5,这时候再次启动服务器,服务器并没有init.....出现,这说明 Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象 ,说明Servlet是单例的 多个用户同时访问时,可能存在线程安全问题 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对其修改值(赋值) 2.提供服务:执行service方法,执行多次 每次访问Servlet时,Service方法都会被调用一次 3.被销毁:执行destroy方法,执行一次

MVC框架详解(资源整理)

淺唱寂寞╮ 提交于 2019-12-15 01:37:19
一、什么是MVC? MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。 1、视图 视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。 2、 模型 模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据

Spring MVC中JSP引用js jquery 报404

一世执手 提交于 2019-12-15 01:20:39
web.xml配置文件 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > < web-app > < display-name > Archetype Created Web Application </ display-name > <!--配置springMVC的核心控制器--> < servlet > < servlet-name > dispatcherServlet </ servlet-name > < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class > <!--配置servlet的初始化参数,读取SpringMVC的配置文件,创建Spring容器--> < init-param > < param-name > contextConfigLocation </ param-name > < param-value > classpath:springmvc.xml </ param-value > </ init-param > <!-

守护线程的理解

家住魔仙堡 提交于 2019-12-14 18:52:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) Daemon的作用是为其他线程的运行提供便利服务, 比如垃圾回收线程就是一个很称职的守护者 。User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了。 值得一提的是,守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程。下面的方法就是用来设置守护线程的。 public final void setDaemon(boolean on) 这里有几点需要注意: (1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。 (2) 在Daemon线程中产生的新线程也是Daemon的。 (3) 不要认为所有的应用都可以分配给Daemon来进行服务,比如读写操作或者计算逻辑。 因为你不可能知道在所有的User完成之前

SpringMVC框架(1)--基础入门

给你一囗甜甜゛ 提交于 2019-12-14 15:13:59
Spring框架可优化的部分: 因为应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) ,这样的弊端是配置文件加载多次,应用上下文对象创建多次。所以在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在Web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicationContext,在将其存储到最大的域servletContext域中,这样就可以在任意位置从域中获得应用上下文ApplicationContext对象了。只加载一次配置文件就可以了,也可以将Spring与Web环境集成。 怎么使用Spring提供的工具获取应用上下文? Spring提供了一个监听器ContextLoaderListener就是对上述功能的封装,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域中,提供了一个客户端工具WebApplicationContextUtils供使用者获得应用上下文对象。 使用步骤: 1.导入坐标 <dependency> <groupId>org

Spring MVC 复习

ε祈祈猫儿з 提交于 2019-12-14 08:58:33
概念 三层架构 将整个业务应用划分为三层 ​ 表现层:用来和客户端进行数据交互,一般采用 MVC 设计模式 ​ 业务层:处理公司具体业务逻辑 ​ 持久层:用来操作数据库 MVC模型 Model View Controller模型视图控制器 ​ Model:数据模型,JavaBean的类,用来封装数据 ​ View:通过jsp, html等展示数据 ​ Controller:接收用户请求,整个流程的控制器 Spring MVC spring提供的mvc框架 ​ 与struts2的区别:前者入口为servlet,后者用filter接收请求;前者基于方法,后者基于类(每次执行都会新建一个对象,效率低);前者使用更方便;前者使用JSTL表达式执行效率高,后者使用OGNL表达式开发效率高 ​ 应用 环境搭建 新建maven项目(不使用骨架) 完善目录结构 在main目录下新建webapp/WEB-INF/web.xml文件并导入约束和新建jsp.index文件 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Web Application<