1.Servlet的Request对象:处理客户端请求信息。一次请求对应一个request对象。
1.1:getParameter(String name);//通过表单元素name属性名获得表单元素value属性值。
1.2:getParameterValues(String name);//通过表单元素name属性名获得表单元素的一组value 属性值。
1.3:setAttribute(String name, Object o);//按key-value方式将值存在一次请求范围内
1.4:getAttribute(String name);//按Key名获取请求范围内存的Value值。
1.5:removeAttribute(String name);//按Key名移除请求范围内存的一对Key-value对。
1.6:setCharacterEncoding(String env);//设置post方式请求的字符编码。
1.7:getCookies();//获取客户端所有的cookies信息。
1.8:getMethod();//获取客户端请求的方式,get/post/put
1.9:getSession();//获取当前Session对象
1.10:getRequestDispatcher(String path).forward(ServletRequest request, ServletResponse response) ;//实现页面跳转的同时,将当次请求对应请求对象和响应传递过去。
2.Servlet的Response对象:处理客户端响应信息。一次响应对应一个response对象。
2.1:getWriter() ;//获取打印流对象
2.2:setCharacterEncoding(String charset);//设置响应的字符编码
2.3:setContentType(String type);//设置响应的内容类型
2.4:addCookie(Cookie cookie);//将信息以cookie的形式通过浏览器存储到客户端
2.5:sendRedirect(String location);//实现页面跳转,重定向
2.6:setHeader(String name, String value) ;//设置响应头部信息
3.get VS post
3.1:get提交会将页面提交的信息以参数的形式在URL后面显示出来;
post提交不会将页面提交的信息在URL后面显示出来;
3.2:get提交不安全;post提交安全。
3.3:get方式提交表单速率快,post方式提交表单速率慢。
3.4:get提交的方式将页面的信息以参数的形式在URL后面拼接传到后台,而每个浏览器对URL 的长度有限制,所以get提交页面信息长度有限制;
post提交的方式将页面的信息在请求体中传到后台,所以页面信息长度无限制;
4.乱码问题:
4.1:post请求乱码:在接收请求数据之前用
//处理post请求的乱码
request.setCharacterEncoding("utf-8");
4.2:get请求乱码:
4.2.1:将乱码的变量用String的构造一个一个处理:
//处理get请求的乱码
uname=new String(uname.getBytes("ISO-8859-1"), "utf-8");
4.2.2:(扩展):在Tomcat的Server.xml文件中的http端口号的地方加一名字符编码的处理。
URIEncoding="UTF-8";
4.3: 响应乱码:
4.3.1:在响应内容之前设置:
//设置响应的内容类型
response.setContentType("text/html;charset=UTF-8");
4.3.2:在响应内容之前设置:
//设置响应的编码方式
response.setCharacterEncoding("utf-8");
5.转发 VS 重定向
5.1:转发:request.getRequestDispatcher("页面地址").forward(request, response);
重定向: response.sendRedirect("页面地址");
5.2:转发后URL不变;重定向后URL变了;
5.3:转发在服务器端起作用,客户端只发送了一次请求。
重定向在客户端起作用,客户端发送了两次请求。
5.4:转发后请求对象中数据共享;重定向后请求对象中数据不共享。
6.了解验证码
6.1:自己画验证码:
eg://声明两个变量存验证码的宽高
int width=120;
int height=40;
//创建内存图像对象
BufferedImage bimg=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//获得图像的画笔
Graphics gp=bimg.getGraphics();
//设置画笔颜色
gp.setColor(Color.blue);
//填充图像的背景颜色
gp.fillRect(0, 0, width, height);
//设置画笔颜色
gp.setColor(Color.YELLOW);
//设置画笔的字体
gp.setFont(new Font("宋体", Font.BOLD, 30));
//声明一个数组存可能作为验证码的字符
String[] s1= {"1","2","3","a","b","e","我","中","人"};
//声明字符串存验证码
StringBuffer sb=new StringBuffer();
//循环生成四个验证码
for (int i = 0; i <4; i++) {
int index=(int)(Math.random()*s1.length);
//生成的验证码字母为
String code1=s1[index];
//将生成的验证码写入到图像上
gp.drawString(code1, i*20+10, 30);
//将每次生成的字母存到sb中
sb.append(code1);
}
//存储生成的验证码,用Session会话对象存
request.getSession().setAttribute("checkcode", sb);
//在图像画干扰线
//设置画笔颜色
gp.setColor(Color.red);
for (int i = 0; i < 10; i++) {
gp.drawLine((int)(Math.random()*width), (int)(Math.random()*height), (int)(Math.random()*width), (int)(Math.random()*height));
}
//将生成的验证写到客户端
ImageIO.write(bimg, "jpg", response.getOutputStream());
6.2:(扩展)用第三方Jar包生成验证码ValidateCode.jar
7.Jsp:Java Server page,java服务器端页面。jsp页面编译后也是Servlet,所以jsp和Servlet属于 同一个祖先。一般咱们用Jsp作前端页面。
Jsp的六个重要组成部分:
7.1:静态页面:在jsp页面可以直接写html代码(包括css,js);
7.2:小脚本:<% Java代码 %>
eg:<!-- java的小脚本 -->
<%
System.out.println("这是一个Java小脚本");
%>
7.3:表达式:<%=输出内容 %>
eg:<!-- 表达式 -->
<%="当前日期:"+getDate(new Date()) %>
7.4:指令:<%@ %>导包,指定页面的属性,导标签库。
7.5:声明(了解):用来声明一个方法。<%! %>
eg:<!-- 声明 -->
<%!
String getDate(Date d){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return sdf.format(d);
}
%>
7.6:注释:
<!--html注释-->查看源码时html注释页面上看到
在小脚本可以用Java的//,/* */
<%-- Jsp注释 --%>查看源码时jsp注释页面上看不到
;