servlet servlet请求与响应
request
客户端浏览器发出的请求被封装成一个HttpServletRequest对象。所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件,客户端的Ip地址甚至客户端操作系统都包含在HttpServletRequest对象中。
response
servlet不仅能输出文本与图片,还能输出其他格式数据,例如word,excel,pdf,mps等
只要正确设定输出类型及输出流。不同的输出类型需要声明不同的Context-Type属性,例如JPG图片是“image/jpeg",而word则是”application/msword"。
实例,response生成图片验证码,response.setContentType("image/jpeg");
package com.servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random; import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder; public class IdentityServlet extends HttpServlet{ private static final long serialVersionUID = 1L; public static final char[] CHARS = {'2','3','4','5','6','7','8',
'9','A','B','C','D','E','F','G','H','Z','K','L','M'
,'N','P','Q','R','S','T','U','V','W','X','Y','Z'};
//don't iclude 0,O,1,I,which difficult to identify
public static Random random = new Random(); public static String getRandomString(){
StringBuffer buffer = new StringBuffer();
for(int i = 0; i <6; i++){
buffer.append(CHARS[random.nextInt(CHARS.length)]);
}
return buffer.toString();
} public static Color getRandomColor(){
return new Color(random.nextInt(255),random.nextInt(255),
random.nextInt(255));
} public static Color getReverseColor(Color c){
return new Color(255 - c.getRed(), 255 - c.getGreen(),
255 - c.getBlue());
} public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
//have to set the output type
response.setContentType("image/jpeg");
String randomString = getRandomString();
//put it in the session
request.getSession(true).setAttribute("randomString", randomString); //width of pic
int width = 100;
//heighth of pic
int height = 30; //color of pic content
Color color = getRandomColor();
//color of background
Color reverse = getReverseColor(color); //create a colorful pic
BufferedImage bi = new BufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
//text style
g.setFont(new Font(Font.SANS_SERIF,Font.BOLD,16));
g.setColor(color);
//draw background
g.fillRect(0, 0, width, height);
g.setColor(reverse);
//draw random text
g.drawString(randomString, 18, 20);
//draw the points
for(int i = 0,n = random.nextInt(100); i < n; i++){
g.drawRect(random.nextInt(width), random.nextInt(height), 1, 1);
} ServletOutputStream out = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bi);
out.flush();
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<servlet>
<servlet-name>IdentyServlet</servlet-name>
<servlet-class>com.servlet.IdentityServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IdentyServlet</servlet-name>
<url-pattern>/servlet/IdentityServlet</url-pattern></servlet-mapping>
</web-app>
效果:
servlet servlet请求与响应的更多相关文章
- JavaWeb之Servlet:请求 与 响应
1 引入 浏览器和服务器的种类都有很多,要在它们之间通讯,必定要遵循一定的准则,而http协议就是这样的一个"准则". Http协议:规定了 浏览器 和 服务器 数据传输的一种格式 ...
- Servlet请求和响应
在Java Web中Servlet.请求和响应是最基本的三个对象,在Web容器的管理下,这三者能够完成基本的HTTP请求处理. Servlet的作用是为客户提供服务.servlet的角色是接受一个客户 ...
- HeadFirst Jsp 04 (请求和响应作为servlet)
servlet 的存在就是为了客服服务, servlet的任务是得到一个客户的请求, 再发回一个响应. 由上图可知, web 容器会在启动后就加载所有的servlet类, 并为之创建实例和初始化 注意 ...
- J2EE请求和响应—Servlet
一.什么是Servlet? Servlet是执行Webserver上的一个特殊Java类.其特殊用途是响应client请求并做出处理.使得client与server端进行交互. 二.生命周期 Ser ...
- Java Servlet (1) —— Filter过滤请求与响应
Java Servlet (1) -- Filter过滤请求与响应 版本: Java EE 6 参考来源: Oracle:The Java EE 6 Tutorial: Filtering Reque ...
- 对Servlet请求或响应进行JMockit测试
对Servlet请求及响应进行mock方法, 通过getMockInstance方法对servlet进行打桩,对servlet提供的方法进行mock,替代真正的servlet请求或响应. 参考链接: ...
- servlet请求和响应的过程
1.加载 Servlet类被加载到Java虚拟机中,并且实例化.在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一个Servlet类的实例对象.默认情况下Se ...
- 简单的Servlet结合Jsp实现请求和响应以及对doGet和doPost的浅析
1.新建jsp,创建表单 <body> <form action="/MyfirstWeb/login"> username:<input type= ...
- 使用Servlet处理请求<http://blog.sina.com.cn/s/blog_5d3fb3cc0100ep9q.html>
一.GET和POST的区别 1.GET提交的是文本内容,规定其数据长度不超过255个字符.在GET方式提交的URL中会显示出提交的查询数据而却提交数据的缓存会在浏览器的URL历史状态中,这样我们往往在 ...
- [02] Servlet获取请求和页面跳转
1.Tomcat和Servlet的关系 之前提到过,Servlet是运行在Web容器里的,Tomcat作为容器的一种,在这里自然也要大概说说两者之间的大致关系. 首先,如上所述,Tomcat是Web应 ...
随机推荐
- [转]Debug 和 Release 编译方式的区别
本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别 2. 哪些情况下 Release 版会出错 3. 怎样“调试” Release 版的程序 Debug 和 Releas ...
- HDU 5410 CRB and His Birthday(完全背包变形)
CRB and His Birthday Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- ORACLE 10进制与16进制的互相转换
1. 10---->16 使用to_char(10,'xxx')函数,如果位数长,多加几个 x 2. 16---->10 使用to_number(’a','xxx')函数,如果位数长,多加 ...
- ORACLE fetch bulk collect into limit
DECLARE TYPE rr IS REF CURSOR; TYPE r_emp IS RECORD( empno ), ename ), job ), mgr ), hiredate DATE, ...
- protobuff 配合 libevent 在Linux 和windows 下的使用
protobuff 配合 libevent 在Linux 和windows 下的使用待补全. libprotobuf.lib libproto-lite.lib libprotoc.lib
- NLPP-02-Exercises
<PYTHON自然语言处理>第2章 内容简介:各种文本语料库. 古腾堡项目 www.gutenberg.org OLAC元数据格式档 http://www.language-archive ...
- [转] Oracle analyze 命令分析
转自:http://blog.sina.com.cn/s/blog_682841ba0101bncp.html 1.analyze table t1 compute statistics for ta ...
- Maven重复类的解决
1. 设置仓库,我的Settings里设置使用了公司的Nexus <?xml version="1.0"?> <settings xmlns="http ...
- DELPHI优秀的一些开源框架:QDAC,MORMOT,DIOCP
DELPHI优秀的一些开源框架:QDAC,MORMOT,DIOCP 程序员搞任何语言的程序开发上升到一定的层次,要想进步,必须要接触和学习使用优秀的开源框架. MORMOT封装了WINDOWS最新的H ...
- SQLServer 脚本测试
最近在做大数据同步的工作.很少数据需要特殊清洗算法,每次测试,都测试全部数据,浪费时间,可以只测试那些特殊数据即可(切记).