JSP期末复习

本文主要介绍了JSP开发中的关键概念,包括HTTP协议的传输方式、请求和响应的处理、Response和Request对象的方法。详细讲解了如何解决中文乱码问题、请求重定向以及如何利用Referer请求头防止“盗链”。此外,还探讨了会话技术,包括Cookie和Session的使用。最后,简要概述了JSP的基础语法、内置对象以及过滤器(Filter)和监听器(Listener)在Web开发中的作用。
摘要由CSDN通过智能技术生成

我只摘录了我觉得在开发过程中有用或可能有用的内容
考试考了里面的70分左右,嘻嘻嘻

HTTP协议的传输方式

(居然会考这个,TAT,我只知道POST和GET)

请求和响应

Servlet最主要的作用就是处理客户端请求,并向客户端做出响应。针对Servlet的每次请求,Web服务器在调用service()方法前,都会创建两个对象:HttpServletRequest和HttpServletResponse。其中HttpServletRequest用于封装HTTP请求消息,简称request对象;HttpServletResponse用于封装HTTP响应消息,简称response对象。
Web服务器只会创建一个实例对象,然而每次请求都会重新创建一个request对象和response对象。

404状态码表示找不到客户端请求的资源

Response对象的方法

getOutputStream() & getWriter()方法

getOutputStream返回OutputStream对象以字节流(二进制)输出
getWriter返回PrintWriter以字符输出

String data=“itcast”;
OutputStream out=response.getOutputStream();
out.write(data.getBytes());
PrintWriter print=response.getWriter();
print.write(data);

getOutputStream和getWrite不能同时使用,否则会发生IllegalStateException异常

setHeader用来设置响应头字段

解决中文乱码

response对象的字符输出采用ISO-8859-1编码
在doGet或doPost或Service最前端加

response.setCharacterEncoding(“utf-8);
response.setHeader(“Content-Type”,”text/html;charset=utf-8);

or

response.setContentType(“text/html;charset=utf-8”);
刷新跳转

2秒后刷新跳转到其他页面

response.setHeader(“Refresh”,2;URL=http://www.baidu.com”);

每隔3秒定时刷新当前页面

response.setHeader(“Refresh”,3);
response.getWriter.println(new java.util.Date());

请求重定向

请求重定向指Web服务器接收到客户端请求后,可能由于某些条件限制,不能访问当前请求URL所指向的Web资源,而是指定了一个新的资源路径,让客户端重新发送请求
会生成302响应码

需要使用绝对路径,路径前端加/

response.sendRedirect(/chapter04/welcome.html”);

路径前加 /

Request对象的方法

利用Referer请求头防止“盗链”(p130)

DownManagerServlet

PrintWriter out=response.getWriter();
String referer=request.getHeader(“referer”);
String sitePart=“http://+request.getServerName();
if(referer!=null&&referer.startsWith(sitePart)){
   //请求头是不是自身!!!
	out.println(“dealing download...);
}else{
   
	RequestDispatcher rd=request.getRequestDispatcher(/download.html”);
	rd.forward(request,response);
}

在WebContent根目录下编写download.html

<a href=“/chapter04/DownManagerServlet”>download</a>

浏览器中直接输入DownManagerServlet的URL,第一次访问时不会有Referer请求头,再点击download会显示结果。
链接才会产生请求头,就是说输入URL访问不会产生Referer!

获取请求参数

当网页中表单(form)提交时
String getParameter(String name)获取指定名称的参数值
String[] getParameterValues(String name)获取指定名称的参数列表(比如多选按钮传来的值)

//html部分
<input type=“text” name=“username”/>
<input type=“checkbox” name=“hobby” value=“sing”>唱歌
<input type=“checkbox” name=“hobby” value=“dance”>跳舞
<input type=“checkbox” name=“hobby” value=“football”>足球
//servlet部分
String name=request.getParameter(“username”);
String[] hobbys=request.getParameterValues(“hobby”);

如果获得的属性值不为String或者基本类型,需要进行数据转化,例如对一个User对象

User user=(User)request.getParameter(“user”);

解决请求中文乱码

只对POST有效对,GET无效

request.setCharacterEncoding(“utf-8);

GET提交表单时

String name=request.getParameter(“username”);
name=new String(name.getBytes(“iso8859-1),”utf-8); 

public void setAttribute(java.lang.String name,java.lang.Object o);

可以在请求转发时添加属性

请求转发

RequestDispatcher getRequestDispatcher(String path) 参数path必须以“/”开头,

RequestDispatcher接口的方法

1.forward(ServletRequest request,ServletResponse response) :对请求做初步处理后,转发给其他资源响应,其他资源处理完后直接将结果返回客户端;
2.include(ServletRequest request,ServletResponse response) :客户端端响应结果包含当前Servlet的,也包含其他Web资源的;

request.getRequestDispatcher(/ResultServlet”).<
Jsp期末复习资料 习题部分 第一章 JSP概述 1.JSP技术是由 A 语言作为脚本语言。 A.Java B.C++ C.C# D.C 2.Web是与平台无关、分布式的、图形化的和易于导航的,定义了客户端和服务器端如何通信。 3.HTTP(超文本传输协议)是一种Internet上常见的协议,用于传输超文本标记语言(HTML)编写的文件,也就是通常所说的网页。 4.网站一般分为3层,分别是用户界面交互层、应用程序层、数据库层。 5.Servlet的生命周期是载入、初始化、执行和删除。 6.JSP技术是在传统的网页文件HTML中加入java程序片段和JSP标记构建的JSP网页 7.什么是C/S结构?什么是B/S结构?两者由什么区别? 答:C/S是Client/Server(客户机/服务器)结构,B/S是Browser/Server(浏览器/服务器)结构。B/S结构是三层体系结构,B/S结构要求客户端只需要安装一个浏览器(Browser),客户端通过浏览器将请求发送给Web服务器,Web服务器负责与后端数据库服务器进行数据通信;C/S结构是二层结构平台模式,C/S结构要求客户端要安装指定的软件,客户端负责执行前端的数据处理,服务端进行后端的服务处理。 8.简述JSP技术和Servlet技术的区别和联系。 ♦区别:⑴JSP技术主要用来表现页面,而Servlet技术主要用来完成大量的逻辑处理。 ⑵JSP主要用来发送给前端的用户,而Servlet主要来响应用户的请求,完成请求 的逻辑处理。 ♦联系:在实际开发中,往往先把JSP页面开发出来,然后再将JSP代码转换成Servlet。 实验三: <%=1+1 %>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值