web1
HTTP:超文本传送协议 是一套计算机在网络中通信的一种规则 是一种无状态协议:意 思是指,在web浏览器(客户端)和web服务器之间不需要建立持久的连接
信息类型的格式由 MIME定义
HTTP协议包括:请求行、请求头、信息体、分隔请求头和信息体的一个空行
HTTP请求方式有八种:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT
GET、PUT、DELETE 为幂等
POST 为非幂等
请求头由:用户代理资料、可以接收的格式、语言以及内容编码
HTTP响应包括:状态行、响应头、消息体、分隔消息头和响应的一个空行
状态行由:HTTP协议版本、响应状态码和响应描述组成,三者之间用空格分隔
响应头包括:内容类型描述、内容长度、时间邮戳、服务器信息、内容最后更改时间
Servlet:是一个在Web服务器端或者应用服务器端运行的Java程序,主要用于在服务器端产生动态内容
Servlet主要执行任务:
1、读取客户端发送的显示和隐式数据
2、生成结果
3、向客服端发送显示数据(文档)和隐式数据(HTTP响应数据)
Web容器对Servlet的支持包括:
1.通信支持
2.生命周期管理
3.多线程支持
4.JSP支持
5.处理安全性
Web容器主要是用于给处于容器中的应用程序组件(Servlet、JSP)提供一个环境使用Servlet、JSP直接跟容器的环境变量交互
要运行Servlet,必须安装一个容器
Java Web应用程序主要组成部分:
1、配置文件
2、静态文件和JSP
3、类文件和包
Tomcat:不仅能独立成为一个Web服务器,还能与其他的主流http服务器一起工作
Tomcat处理动态的Servlet、JSP请求,且运行稳定、可靠、效率高
Servlet规范的组成
1.Web应用程序
2.Servlet和HTTP Servlet
3.过滤器
4.安全
5.国际化
类与类的关系
1.继承 2.实现 3.关联 4.聚合 5.组合 6.依赖
Servlet遵循三阶段的生命周期:初始化、服务、销毁
初始化和销毁只能执行一次,服务可以执行多次
servlet()方法被调用时,将调用七个不同的辅助方法之一
doGet(),doPost(),doPut(),doHold(),doDelete(),doOptions(),doTrace()
一个Servlet必须要有三个名称
1、Servlet的名称
2、Servlet类的完整名称
3、映射的逻辑名称
public class AuthCode {
public static final int AUTHCODE_LENTH = 5;//验证码的长度
public static final int SINGLECODE_WIDTH = 15;//单个验证码的宽度
public static final int SINGLECODE_HEIGHT = 30;//单个验证码的高度
public static final int SINGLECODE_GAP = 4;//单个验证码之间的间距
public static final int IMG_WIDTH = AUTHCODE_LENTH * (SINGLECODE_WIDTH + SINGLECODE_GAP);//画布的宽度
public static final int IMG_HEIGHT = SINGLECODE_HEIGHT;//画布的高度
/**
* 得到一个5位数的验证码
* @return
*/
public static String getAuthCode(){
String authCode = "";
for(int i = 0; i < AUTHCODE_LENTH; i ++){
int value = new Random().nextInt(10);
authCode += value;
}
return authCode;
}
/**
* 根据验证码生成验证码画板
* @param authCode
* @return
*/
public static BufferedImage getAuthImage(String authCode){
BufferedImage img = null;
//设置画板的高度,宽度,以及画板的色泽
img = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, BufferedImage.TYPE_INT_RGB);
//得到画板中的一个画笔
Graphics g = img.getGraphics();
//设置画笔的颜色
g.setColor(Color.YELLOW);
//使用画笔来填充一个矩形,需要设置的矩形的左上角坐标,宽度,高度
g.fillRect(0, 0, IMG_WIDTH, IMG_HEIGHT);
//将画笔的颜色设置为黑色,用来写字
g.setColor(Color.BLACK);
//设置字体,以及字号等信息
g.setFont(new Font("宋体", Font.BOLD, 20));
char c;
//输出数字
for(int i = 0; i < authCode.toCharArray().length;i++){
//循环取得每个位置上字符
c = authCode.charAt(i);
//将字符画入画板中,并且指定开始的位置
g.drawString(c+"", i*(SINGLECODE_WIDTH + SINGLECODE_GAP) + SINGLECODE_GAP /2, IMG_HEIGHT);
}
//制造干扰素
Random random = new Random();
for(int i = 0; i < 20; i ++){
int x1 = random.nextInt(IMG_WIDTH);
int y1 = random.nextInt(IMG_HEIGHT);
int x2 = random.nextInt(IMG_WIDTH);
int y2 = random.nextInt(IMG_HEIGHT);
g.drawLine(x1, y1, x2, y2);
}
return img;
}
}
resp.sendError(resp.SC_NOT_FOUND, "妹子,你来错地方了!");//操作响应码,并自定义响应描述
String projectName = req.getContextPath();//得到应用程序在WEB容器中部署的名称
//sendRedirect 只适合在应用程序内部完成重定向
resp.sendRedirect(projectName+"/system/success.jsp");
//下面这种就适合重定向到外部应用程序
resp.setStatus(resp.SC_MOVED_TEMPORARILY);//用于设置响应码
resp.setHeader("Location", "http://www.baidu.com");
getServletContext().setAttribute("authCode", authCode);//将验证码放入应用上下文环境中,其他Servlet类都可以获取
浙公网安备 33010602011771号