servlet

javaweb读书笔记

◇◆丶佛笑我妖孽 提交于 2019-12-03 23:21:37
软件的三大类型,单机,cs ,bs 海量数据可以保存缓存,减少查询数据库的次数,加快访问的速度,缓存的失效可以定期的失效或者在数据发生变化时失效,可以分为粗粒度的失效和细粒度的失效。 可以将数据库中本来是空数据的,做空数据的缓存保存在一定的数据结构中,查询的时候从缓存就知道数据中对应的值为空。 还有一种技术就是页面静态化,同时对数据量大和并发量高都有好处。页面静态化可以通过程序中的一些模板来实现如freemarker等 数据库优化:表结构优化,sql语法逻辑优化 分区:可以部分表达到分表类似的效果,就是将一张表中的数据按照一定的规则分到不同的区来保存,这样在查询数据时如果数据的范围在同一个区内就可以只对一个区的数据进行操作。这样的操作数据量更小,速度更快。对程序透明,程序不需要做任何改动 分表 按操作的类型分表,按字段的范围分表,按操作的时间段分区 索引的优化 使用存储过程代替直接操作,存储过程只编译一次 分离活跃的数据:比如说将论坛中活跃的用户保存到一张表,不活跃的用户分离到另一张表中,查询时先查默认表,查不到时再去不活跃的用户表中查询。 批量读取和延迟修改 减少操作的次数来提高效率 将3,5秒的查询合并到一次数据库查询来完成 延迟修改,先将一些修改保存到缓存中,一段时间统一同步到数据库中 读写分离 数据库服务器集群,数据库同步,将写操作由一台指定服务器完成

servelet,webservice,RMI的区别

橙三吉。 提交于 2019-12-03 22:38:13
最近项目中有提供或者调用别的接口,在纠结中到底是用servlet还是用webservice,所以上网查看了下他们以及RMI之间的区别,方便加深了解。 首先比较下servlet和webservice下 请求: servlet:提供了请求/响应模式,是JAVA的一种规范,只能使用于java上,用来替代早期使用的难懂的CGI,是一种无状态的请求响应,客 户端访问一个服务器的url,只需要发送简单的httprequest即可。 规定了四个范围:pageContext、request、session、application。一定依赖于各种SERVLET容器,但 servlet只能接受一个简单的http请求; WebService最早是微软提出了一种以XML为载体网络信息传输的规范,现在几乎所有的语言与平台都支持,带有状态机制,不依赖于 SERVLET容器,可以发送一个xml作为其请求内容,WebService通常是基于http的远程方法调用(RMI),号称是可以反回远程对象, 一般来说客户段可以象调用本地方法一样调用WebService的方法。 传输: servlet使用http协议传输数据,如果你用Servlet返回XML,那个XML的描述框架就是你定的,必须告知使用者具体的说明,没有统一标准。 webservice使用固定的XML格式封装成soap消息,可以使用http作为底层数据传输

IDEA模块化集成SSM

馋奶兔 提交于 2019-12-03 22:20:22
模块化的分层 一级每层需要使用的包 在父文件需要引入的包 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.jiedada</groupId> <artifactId>crm_parent</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>basic_util</module> <module>crm_common</module> <module>basic_core</module> <module>crm_mapper</module> <module>crm_service</module> <module>crm_web<

Servlet基础认识

拈花ヽ惹草 提交于 2019-12-03 21:26:51
1. 简述:   Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。 2. 任务:   Servlet 执行以下主要任务: 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。 发送隐式的 HTTP

Spring Boot项目中如何定制servlet-filters

谁都会走 提交于 2019-12-03 21:13:28
本文首发于个人网站: Spring Boot项目中如何定制servlet-filters 在实际的web应用程序中,经常需要在请求(request)外面增加包装用于:记录调用日志、排除有XSS威胁的字符、执行权限验证等等。除了上述提到的之外,Spring Boot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,并且我们在自己的项目中还可以增加别的过滤器。 Spring Boot、Spring Web和Spring MVC等其他框架,都提供了很多servlet 过滤器可使用,我们需要在配置文件中定义这些过滤器为bean对象。现在假设我们的应用程序运行在一台负载均衡代理服务器后方,因此需要将代理服务器发来的请求包含的IP地址转换成真正的用户IP。Tomcat 8 提供了对应的过滤器: RemoteIpFilter 。通过将RemoteFilter这个过滤器加入过滤器调用链即可使用它。 实战 一般在写简单的例子时,不需要单独定义配置文件,只需要将对应的bean对象定义在Application类中即可。正式的项目中一般会有单独的web配置文件,我们在项目的 com.test.bookpub (与BookpubApplication.java同级)下建立WebConfiguration.java文件,并用

JavaWeb三大组件之Servlet

别说谁变了你拦得住时间么 提交于 2019-12-03 21:07:06
在JavaWeb中有三大组件,分别是Servlet、Filter和Listener。其中Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,即接收请求数据、处理请求和完成响应。   1. 实现Servlet的方式   主要有三种实现方式:1)实现javax.servlet.Servlet接口;2)继承javax.servlet.GenericServlet类;3)继承javax.servlet.http.HttpServlet类;其中最常用的继承HttpServlet类来实现。   2. 关于Servlet接口 1 public interface Servlet { 2 3 public void init(ServletConfig config) throws ServletException; 4 5 public ServletConfig getServletConfig(); 6 7 public void service(ServletRequest req, ServletResponse res) 8 9 throws ServletException, IOException; 10 11 public String getServletInfo(); 12 13 public void destroy(); 14 15 }  

maven-jetty-plugin插件的配置

ぐ巨炮叔叔 提交于 2019-12-03 19:55:41
Xml代码 < build > < finalName > rop-sample </ finalName > < plugins > <!-- jetty插件 --> < plugin > < groupId > org.mortbay.jetty </ groupId > < artifactId > maven-jetty-plugin </ artifactId > < version > 6.1.5 </ version > < configuration > < webAppSourceDirectory > src/main/webapp </ webAppSourceDirectory > < scanIntervalSeconds > 3 </ scanIntervalSeconds > < contextPath > / </ contextPath > < connectors > < connector implementation = "org.mortbay.jetty.nio.SelectChannelConnector" > < port > 8088 </ port > </ connector > </ connectors > </ configuration > </ plugin > </ plugins > </ build >

WebService另一种轻量级实现—Hessian 学习笔记

£可爱£侵袭症+ 提交于 2019-12-03 19:33:44
最近研究,得知他们在使用一种叫做Hessian的WebService实现方式实现远程方法调用,是轻量级的,不依赖JavaEE容器,同时也是二进制数据格式传输,效率比SOAP的XML方式要高。感觉像是RESTFUL方式类似,好奇之下到网上查阅相关资料,总结如下: 简介 Hessian是由caucho提供的一个基于binary-RPC实现的远程通讯library。   1、是基于什么协议实现的?    基于Binary-RPC协议实现。   2、怎么发起请求?    需通过Hessian本身提供的API来发起请求。   3、怎么将请求转化为符合协议的格式的?    Hessian通过其自定义的串行化机制将请求信息进行序列化,产生二进制流。   4、使用什么传输协议传输?    Hessian基于Http协议进行传输。   5、响应端基于什么机制来接收请求?    响应端根据Hessian提供的API来接收请求。   6、怎么将流还原为传输格式的?    Hessian根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。   7、处理完毕后怎么回应?    处理完毕后直接返回,hessian将结果对象进行序列化,传输至调用端。 Hessian 调用实例 a) 编写服务端代码 写一个接口: [java] view plain copy public

Servlet doGet和doPost方法

核能气质少年 提交于 2019-12-03 19:11:39
首先你要明确servlet的生命周期和HTTP协议. Serlvet接口只定义了一个服务方法就是service,而HttpServlet类实现了该方法并且要求调用下列的方法之一: doGet:处理GET请求 doPost:处理POST请求 当发出客户端请求的时候,调用service 方法并传递一个请求和响应对象。Servlet首先判断该请求是GET 操作还是POST 操作。然后它调用下面的一个方法:doGet 或 doPost。如果请求是GET就调用doGet方法,如果请求是POST就调用doPost方法。doGet和doPost都接受请求 (HttpServletRequest)和响应(HttpServletResponse)。 get和post这是http协议的两种方法,另外还有head, delete等 这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。 在servlet开发中,以doGet()和doPost()分别处理get和post方法。 另外还有一个doService(), 它是一个调度方法,当一个请求发生时,首先执行doService(),不管是get还是post。在HttpServlet这个基类中实现了一个角度,

JAVA Freemarker(1)--入门示例

ぐ巨炮叔叔 提交于 2019-12-03 18:59:15
1、新建一个WEB工程, 下载(我使用的是freemarker-2.3.20)freemarker并导入freemarker.jar,在WEB-INF下新建文件夹templates用于存放模版文件 在templates下新建test.ftl,这是示例模版文件。内容就是HTML内容,里面带有一个标记符,用于将来进行变量替换,内容如下: Html代码 < html > < head > < title > freemarker测试 </ title > </ head > < body > < h1 > ${message},${name} </ h1 > </ body > </ html > 2、新建一个Servlet,用于请求设置变量,并处理模版的输出: Java代码 package com.cloud.wyscha.servlet; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet