servlet

@Configuration的使用 和作用

匿名 (未验证) 提交于 2019-12-03 00:27:02
  从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。 注意 :@Configuration注解的配置类有如下要求: @Configuration不可以是final类型; @Configuration不可以是匿名类; 嵌套的configuration必须是静态类。 一、用@Configuration加载spring 1.1、@Configuration配置spring并启动spring容器 1.2、@Configuration启动容器+@Bean注册Bean 1.3、@Configuration启动容器+@Component注册Bean 1.4、 使用 AnnotationConfigApplicationContext 注册 AppContext 类的两种方法 1.5、配置Web应用程序(web.xml中配置AnnotationConfigApplicationContext) 二、组合多个配置类 2.1、在@configuration中引入spring的xml配置文件 2

servlet是否存在线程安全问题

匿名 (未验证) 提交于 2019-12-03 00:26:01
今天老师问了一句,servlet存在线程安全问题吗, public class threadSafe extends HttpServlet { private static final long serialVersionUID = 1L ; private volatile int num = 0 ; protected void doGet ( HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException { addOne (); response . getWriter (). write ( "now access num : " + getNum ()); } /** * 读取开销低 */ private int getNum () { return num ; } /** * 其写入为非线程安全的,赋值操作开销高 */ private synchronized void addOne () { num ++; } } synchronized 关键字 转载请标明出处: servlet是否存在线程安全问题 文章来源: servlet是否存在线程安全问题

JAVA版-SWFUpload使用(包括传参问题)

南楼画角 提交于 2019-12-03 00:24:20
官方的版本中只有php的版本,从网上找了其他人写的内容,自己实现了一个servlet的版本, 但是又出现另一个问题,如何向后台传递参数的问题,现在整理出来,以备忘。 问题: 1、编码问题,做的示例用的gb18030,所以后台很多的转码问题,采用UTF-8,能好一些, 2、传递中文问题,最好还是前台进行encoding,(encodeURI),后台进行解析取出来吧--未测试 上代码: 一、前台页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>文件上传swfupload使用</title> <meta http-equiv="pragma"

Spring web过滤器-各种filter讲解

匿名 (未验证) 提交于 2019-12-03 00:22:01
http://liuluo129.iteye.com/blog/1965268 图来自上面连接 http://blog.csdn.net/geloin/article/details/7441330 整理于上面 Spring的web包中中有很多过滤器,这些过滤器位于org.springframework.web.filter并且理所当然地实现了javax.servlet.Filter,不过实现的方式有以下几类: GenericFilterBean [java] view plain copy /** public final void throws if "'" this try new this this new class new this true catch throw new if [java] view plain copy new this this new bw.registerCustomEditor(Resource. class new this true OncePerRequestFilter [java] view plain copy /** public final void throws if instanceof instanceof throw new if null else try finally

SpringBoot整合Servlet的两种方式

匿名 (未验证) 提交于 2019-12-03 00:22:01
Maven3.5 JDK1.8 idea SpringBoot2.0.1 工程pom文件加入Jar包 < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-web </ artifactId > </ dependency > @WebServlet (name = "firstServlet" , urlPatterns = "/firstServlet" ) //标记为servlet,以便启动器扫描。 public class FirstServlet extends HttpServlet { @Override protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().append( "firstServlet" ); } } @SpringBootApplication @ServletComponentScan //启动器启动时,扫描本目录以及子目录带有的webservlet注解的 public class

springboot学习(二)――springmvc配置使用

匿名 (未验证) 提交于 2019-12-03 00:22:01
以下内容,如有问题,烦请指出,谢谢 上一篇讲解了springboot的helloworld部分,这一篇开始讲解如何使用springboot进行实际的应用开发,基本上寻着spring应用的路子来讲,从springmvc以及web开发讲起。 官方文档 中在helloworld和springmvc之间还有一部分内容,主要讲了spring应用的启动、通用配置以及日志配置相关的内容,其中关于通用配置的部分对于springboot来说是个很重要的内容,这部分等到后面在细说下,有了一定的应用能力,到时候理解起来轻松些。 先来回顾下springmvc是怎么使用的。 首先需要配置DispatcherServlet,一般是在web.xml中配置 < servlet > < servlet-name > dispatcherServlet </ servlet-name > < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class > < load-on-startup > 1 </ load-on-startup > </ servlet > < servlet-mapping > < servlet-name > dispatcherServlet </ servlet-name > <

Spring Boot(三)--Servlet

匿名 (未验证) 提交于 2019-12-03 00:22:01
Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet、Filter、Listener、Interceptor 等等。 Spring boot 的主 Servlet 为 DispatcherServlet,其默认的url-pattern为“/”。也许我们在应用中还需要定义更多的Servlet,该如何使用SpringBoot来完成呢? 也可以通过实现 ServletContextInitializer 接口直接注册。 二、在 SpringBootApplication 上使用@ServletComponentScan 注解后,Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册,无需其他代码。 通过代码注册Servlet示例代码: SpringBootSampleApplication.java package org.springboot.sample; import org.springboot.sample.servlet.MyServlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure

(一)SpringMVC之配置DispatcherServlet的一些坑

匿名 (未验证) 提交于 2019-12-03 00:22:01
DispatcherServlet是SpringMVC的核心控制器,就像是SpringMVC的心脏,几乎所有的请求都会经过这个控制器,通过它,大大的降低了模块之间的耦合度。所有学SpringMVC的同学们第一步肯定都是先配置这个Servlet,不然还写啥SpringMVC啊。 那其实我第一次写SpringMVC的时候就遇到了好多坑,这里记录一下,只是冰山一角,但希望能帮助一些人。 为了更好的说明情况,我先写一些代码 首先新建一个MyController继承自Controller public class MyController implements Controller { @Override public ModelAndView handleRequest (HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { ModelAndView mav = new ModelAndView(); // 增加一个属性到model中,底层是调用了request.setAttribute()方法 mav.addObject( "hello" , "hello springmvc" ); // 为这个模型视图起一个逻辑视图名 mav.setViewName( "hello" ); return mav; }

写一个迷你版的Tomcat

匿名 (未验证) 提交于 2019-12-03 00:22:01
前言 Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,今天让我来抽象你,实现你! Tomcat Write MyTomcat Tomcat是非常流行的Web Server,它还是一个满足Servlet规范的容器。那么想一想,Tomcat和我们的Web应用是什么关系? 从感性上来说,我们一般需要把Web应用打成WAR包部署到Tomcat中,在我们的Web应用中,我们要指明URL被哪个类的哪个方法所处理(不论是原始的Servlet开发,还是现在流行的Spring MVC都必须指明)。 由于我们的Web应用是运行在Tomcat中,那么显然,请求必定是先到达Tomcat的。Tomcat对于请求实际上会进行下面的处理: 第一:提供Socket服务 Tomcat的启动,必然是Socket服务,只不过它支持HTTP协议而已! 这里其实可以扩展思考下,Tomcat既然是基于Socket,那么是基于BIO or NIO or AIO呢? 第二:进行请求的分发 要知道一个Tomcat可以为多个Web应用提供服务,那么很显然,Tomcat可以把URL下发到不同的Web应用。 第三:需要把请求和响应封装成request/response 我们在Web应用这一层,可从来没有封装过request/response的,我们都是直接使用的

04_作为 Servlet(一)

匿名 (未验证) 提交于 2019-12-03 00:20:01
容器控制着 servlet 的一生,它会创建请求和响应对象. 为 servlet 创建一个新线程或分配一个线程,另外调用 servlet 的 service() 方法,并传递请求和响应对象的引用作为参数。 servlet 完整的的生命周期如下所示: Web 容器加载 Servlet 类 初始化 servlet ( 构造函数运行 ) Servlet 的无参构造函数运行( 只需要使用编译器提供的默认构造函数即可) init():在 servlet 的一生中只调用一次,而且必须在容器调用 service() 之前完成 service():处理客户请求,会执行 doGet(). doPost() 等 每个请求都在一个单独的线程中运行 destroy():在 servlet 被杀死之前清理资源 如下图,servlet 接口中三个粗体显示的是生命周期方法。 大多数 servlet 行为都由超类方法处理,你只需要覆盖所需的 HTTP 方法 何时调用 作用 是否覆盖 init() servlet 实例创建后,并在 servlet 能为客户请求提供服务之前,容器要对 servlet 调用 init() 使你在 servlet 处理客户请求之前有机会对其初始化 有 如果有初始化代码,就要覆盖其 init() 方法 service() 第一个客户请求到来时,容器会开始一个线程池,或分配一个线程,并调用