jsp学习.docx
《jsp学习.docx》由会员分享,可在线阅读,更多相关《jsp学习.docx(17页珍藏版)》请在冰豆网上搜索。
jsp学习
目录:
Web
——index.html
——WEB-INF
——classes(java)
——lib(jar)
web.xml
Http协议:
http/1.0
http/1.1
请求行:
GET方式;POST方式;
请求头:
Accept:
用户告诉服务器,客户机支持的数据格式。
Aceept-Charset:
用于告诉服务器,客户机采用的编码。
Accept-Encoding:
用户告诉服务器,客户机支持的数据压缩格式。
Accept-Language:
客户机的语言环境;
Host:
客户机通过这个头告诉服务器,想访问的主机名。
If-Modified-Since:
客户机通过这个头告诉服务器,资源的缓存时间。
Referer:
客户机通过这个头告诉服务器,它是从哪个资源访问服务器的。
(从那个页面过来的)防止盗链(不是从这个网站过来的,跳到首页)
User-Agent:
客户机通过这个头告诉服务器,客户机的软件环境。
Cookie:
客户机通过这个头向服务器带一点数据。
Connection:
Date
http响应:
响应头:
Location:
这个头配合302使用,找谁。
302+Location请求重定向。
Server:
服务器通过这个头,告诉浏览器服务器的类型。
Content-Encoding:
服务器通过这个头,数据的压缩格式。
Content-Length:
服务器通过该头,告诉浏览器回送数据的长度。
Content-Type:
服务器通过该头,告诉浏览器回送数据的类型。
Last-Modified:
服务器通过这个头,告诉浏览器当前资源缓存时间。
Refresh:
服务通过这个头,告诉浏览器多长时间刷新下。
(聊天室,论坛登录)
Content-Desposition:
服务器通过这个头,告诉浏览器以下载方式打开数据。
Transfer-Encoding:
服务器通过这个头,告诉浏览器数据的传递格式。
ETag:
缓存相关的头
Expires:
服务器通过这个头,告诉浏览器把回送的资源缓存多长时间,-1或0,则是不缓存。
Cache-Control:
no-cache
Pragma:
no-cache
服务器通过以上两个头,也是控制浏览器不要缓存数据。
断点下载
Range
请求数据
伪静态:
映射
MVC
Mode——javabean
View——jsp
Controller——servlet
Request.sendredirect(“/form.html”).forward(request,reponse);//服务器用;
Response.sendredirect(“/test/form.html”);//浏览器用;
this.getservletcontext().getrealpath(“/form.html”);
this.getservletcontext().getresourceasstream(“/form.html”);
浏览器
Response
PrintWriterout=response.getWriter();
out.write("helloworld");
response.getWriter().write("helloworld");
控制输出乱码:
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
重定向:
response.sendRedirect("/test/index.jsp");
刷新
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.setHeader("refresh","3;url=/test/index.jsp");
response.getWriter().write("恭喜你登陆成功,本浏览器将在3秒后跳转,如果没跳转,请点击超链接");
控制浏览器缓存
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//控制浏览器缓存;
response.setDateHeader("Expires",System.currentTimeMillis()+1000*3600);
Stringdata="中国";
response.getWriter().write(data);
Request
获取参数:
//get方式乱码(手工处理,超链接);
Stringname_value=request.getParameter("username");
name_value=newString(name_value.getBytes("iso8859-1"),"UTF-8");
//中文乱码;
request.setCharacterEncoding("UTF-8");//只对post有效;
System.out.println(request.getParameter("username"));
System.out.println(request.getParameter("pass"));
System.out.println(request.getParameter("gender"));
System.out.println(request.getParameter("city"));
Stringlikes[]=request.getParameterValues("likes");
for(inti=0;iSystem.out.println(likes[i]);
}
System.out.println(request.getParameter("description"));
System.out.println(request.getParameter("id"));
转发
Stringdata="aaa";
request.setAttribute("data",data);
//转发;
request.getRequestDispatcher("/message.jsp").forward(request,response);
防盗链:
Stringreferer=request.getHeader("referer");
if(referer==null||!
referer.startsWith("http:
//localhost"))
{
//action
response.sendRedirect("");
return;
}
Cookie
//设置Cookie;
Cookiecookie=newCookie("lastAccessTime",System.currentTimeMillis()+"");
cookie.setMaxAge(1*30*24*3600);
cookie.setPath("/eclipse");
response.addCookie(cookie);
//获取Cookie
Cookiecookies[]=request.getCookies();
for(inti=0;cookies!
=null&&iif(cookies[i].getName().equals("lastAccessTime")){
Longcookievalue=Long.parseLong(cookies[i].getValue());
Datedate=newDate(cookievalue);
response.getWriter().write(date.toLocaleString());
}
}
//清除cookie
Cookiecookie=newCookie("lastAccessTime",System.currentTimeMillis()+"");
cookie.setMaxAge(0);
cookie.setPath("/eclipse");
response.addCookie(cookie);
response.sendRedirect("/test/");
Session
//设置session
HttpSessionsession=request.getSession();
session.setAttribute("name","洗衣机");
//获取Session
HttpSessionsession=request.getSession();
Stringproduct=(String)session.getAttribute("name");
//销毁Session
session.invalidate();
session.removeAttribute("name");
//表单重复提交
js(君子,小人)
variscommitted=false;
functiondosubmit()
{
If(!
iscommitted)
{
Iscommitted=true;
Returetrue;
}
else{returnfalse;}
}
设置按钮不可用;
后台;
JSP
访问jsp其实是调用servlet
Request
Response
Session
Application
<%@includefile="/public/head.jsp"%>先包含再翻译,把所有jsp翻译成一个servlet
<%
request.getRequestDispatcher("/public/foot.jsp").include(request,response);
%>动态包含,先翻译再包含
Page指令
include指令
静态包含(静态页面)
<%@includefile="/public/head.jsp"%>//形成一个文件再编译;
Jsp动作元素
include>
动态包含
includepage="/public/head.jsp">
include>
param>
includepage="/public/head.jsp">
paramvalue="tomcat"name="name"/>
include>
head.jsp
<%
out.println("helloworlds
");
Stringname=request.getParameter("name");
out.println(name);
%>
forward>
forwardpage="forward.jsp">
forward>
useBean>
useBeanid="person"class="com.vince.bean.Person">
useBean>
<%--设置对象的属性值--%>
setPropertyproperty="name"name="person"value="小白"/>
setPropertyproperty="age"name="person"value="18"/>
<%--获取对象的属性值--%>
getPropertyproperty="name"name="person"/>
getPropertyproperty="age"name="person"/>
内置对象
out.println();
out.print();
out.write();
request
request.getParamater(key);
request.getParameterValues(key);//获取一组数据;
request.getRequestDispatcher(“list.jsp”).forward(request,response);
request.setAttribute(key,value);
request.getAttribute(key);
request.setChracterEncoding(“UTF-8”);//只能设置post;
String[]likes=request.getParameterValues(key);//获取一组数据;
request.setAttribute(key,value);//转发的时候带一些数据过去;
request.getAttribute(key);//获取;
request.getContextPath();//获取根路径;
response
response.sendRedirect(“页面”);
response.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);//设置响应编码;
response.setContentType(“text/html;charset=UTF-8”);//设置内容类型;
session
session.setAttribute(“name”,username);//将用户名保存到当前会话对象中;
session.getAttribute(“name”);//获取session;
session.setMaxInactiveInterval(1000*60*30);//30分钟;
session.invalidate();//设置session初始化;(系统退出)
pageContext
上下文对象;
application
公共的;
application.setAttribute("count",num);
application.getAttribute("count");
config
page
exception
表单传值
get:
显示请求方式,速度快,安全性低,请求数据不能超过4KB;
post:
隐式请求方式;
request.setChracterEncoding(“UTF-8”);
get方式:
方式一:
Stringname=newString(name.getBytes("iso-8859-1"),"UTF-8");//后台;
方式二:
functionlogin()
{
varloginform=documnet.forms["loginform"];
loginform.name.value=encodeURI(login.form.name.value);
loginform.submit();
}//onsubmit函数;
Stringname=URLDecoder.decode(name,"UTF-8");//后台获取;
隐藏域
Cookie
//设置Cookie
CookienameCookie=newCookie("username",name);
nameCookie.setMaxAge(60*60*24*3);//三天;
CookiepwdCookie=newCookie("password",pwd);
pwdCookie.setMaxAge(60*60*24*3);
response.addCookie(nameCookie);
response.addCookie(pwdCookie);
//获取Cookie
Cookie[]cookies=request.getCookies();
for(inti=0;i{
if("username".equals(cookies[i].getName()))
{
username=cookies[i].getValue();
}
if("password".equals(cookies[i].getName()))
{
password=cookies[i].getValue();
}
}
EL表达式
${sessionScope.user}
${sessionScope.userbean.sex}
${sessionScope.userbean[“sex”]}
EL隐含对象
pageContext
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
headerValues
cookie
initParam
JSTL标签
核心标签库
out>//输出;
set>//定义变量;
if>//if
choose>//when
iftest="${notemptyrequestScope.name}">
欢迎你,outvalue="${requestScope.name}">
out>
if>
iftest="${emptyrequestScope.name}">
登录
if>
setvar="age"value="18">
set>
choose>
whentest="${age<18}">
未成年
when>
whentest="${age>=18&&age<30}">
欢迎光临
when>
otherwise>
老年人注意身体
otherwise>
choose>
//遍历
forEachitems="${requestScope.users}"var="user">
${user.name}
${user.age}
forEach>
--
varStatus状态
index索引从0开始
count从1开始当前遍历次数
current当前正在迭代的
first是否第一个
last是否最后一个
-->
forEachbegin="0"varStatus="status"end="10"items="${requestScope.users}"var="user">
${user.name}
${user.age}
${status.index}
${status.count}
${status.current}
${status.first}
${status.last}
forEach>
setvar="likes"value="xiaoqiu,libai">
set>
//切分
forTokensitems="${likes}"delims=","var="val">
${val}
forTokens>
Servlet