JavaWeb教学手册.docx
- 文档编号:23492021
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:53
- 大小:2.49MB
JavaWeb教学手册.docx
《JavaWeb教学手册.docx》由会员分享,可在线阅读,更多相关《JavaWeb教学手册.docx(53页珍藏版)》请在冰豆网上搜索。
JavaWeb教学手册
第1章动态网页开发基础
1.1B/S与C/S的比较
B/S架构(浏览器/服务器):
程序完全部署在服务器上。
1.2B/S技术的工作原理
B/S架构采用请求/响应模式进行交互。
1.3URL组成
UniformResourceLocator(URL):
统一资源定位符。
URL的组成:
1.4Tomcat服务器
Tomcat服务器也可以说是JSP/Servlet容器。
Tomcat服务器的目录结构:
说明
/bin
存放各种平台下用于启动和停止Tomcat的脚本文件
/conf
存放Tomcat服务器的各种配置文件
/lib
存放Tomcat服务器所需的各种JAR文件
/logs
存放Tomcat的日志文件
/temp
Tomcat运行时用于存放临时文件
/webapps
当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中
/work
Tomcat把由JSP生成的Servlet放于此目录下
通过配置文件server.xml修改Tomcat端口号。
1.5JSP
HTML中嵌入Java脚本:
1.5.1JSP执行过程
Web容器处理JSP文件请求需要经过3个阶段:
翻译、编译、执行。
第一次请求之后,Web容器可以重用已经编译好的字节码文件。
如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译。
1.6总结
第2章JSP技术
2.1JSP内置对象
常用JSP内置对象:
内置对象名称
说明
out
用于向客户端输出数据
request
主要用于接收客户端请求的数据
response
用于响应客户端请求并向客户端输出信息
session
用于记录会话状态的相关信息
application
类似于系统的全局变量,用于实现Web应用中的资源共享
2.2request对象
request对象主要用于处理客户端请求。
request对象常用方法:
方法名称
说明
StringgetParameter(Stringname)
根据表单组件名称获取提交数据
String[]getParameterValues(Stringname)
获取表单组件对应多个值时的请求数据
voidsetCharacterEncoding(Stringcharset)
指定每个请求的编码
RequestDispatchergetRequestDispatcher(Stringpath)
返回一个RequestDispatcher对象,该对象的forward()方法用于转发请求
response重定向
request转发
2.2.1接收多个参数值
用户注册页面:
--省略提交、取消按钮-->
接收提交过来的数据:
<%
//读取用户名和密码
Stringname=request.getParameter("name");
Stringpwd=request.getParameter("pwd");
……//HTML页面
//读取复选框选择项
String[]channels=request.getParameterValues("channel");
if(channels!
=null){
for(Stringchannel:
channels){
out.println(channel);
}
}
%>
2.2.2解决中文乱码问题
在页面设置支持中文字符的字符集,如:
UTF-8。
获取数据时解决中文乱码问题。
以POST方式提交数据时:
<%//以POST方式提交数据时
//设置读取请求信息的字符编码为UTF-8
request.setCharacterEncoding("UTF-8");
//读取用户名和密码
Stringname=request.getParameter("name");
Stringpwd=request.getParameter("pwd");
%>
以GET方式提交数据时(方法一):
<%//以GET方式提交数据时
//读取用户名和密码
Stringname=request.getParameter("name");
//对请求数据进行字符编码
name=newString(name.getBytes("ISO-8859-1"),"UTF-8");
%>
以GET方式提交数据时(方法二):
在Tomcat目录结构\conf\server.xml中设置字符集。
connectionTimeout="20000" redirectPort="8443"URIEncoding="UTF-8" /> 2.3response对象 response对象用于响应客户请求并向客户端输出信息。 <% request.setCharacterEncoding("UTF-8"); Stringname=request.getParameter("userName"); Stringpwd=request.getParameter("pwd"); if("sa".equals(name)&&"sa".equals(pwd))response.sendRedirect("welcome.jsp");//重定向 %> 2.4转发与重定向 2.5session对象 什么是会话? 一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程。 session对象常用方法: 方法名称 说明 StringgetId() 获取sessionid voidsetMaxInactiveInterval(intinterval) 设定session的有效时间(-1表示永不超时) intgetMaxInactiveInterval() 获取session的有效时间(以秒为单位) voidinvalidate() 设置session对象失效 voidsetAttribute(Stringkey,Objectvalue) 以key/value的形式保存对象值 ObjectgetAttribute(Stringkey) 通过key获取对象值 voidremoveAttribute(Stringkey) 从session中删除指定名称(key)所对应的对象 每个session对象都与一个浏览器对应,比如我用IE访问一个项目,登陆后,我无论用IE打开多少个窗口,都使用的是同一个session。 换一个浏览器,比如又用360来访问这个项目,那么就会产生另一个session了。 在控制页面获取用户请求的登录信息进行验证: <% if("admin".equals(name)&&"admin".equals(pwd)){//如果是已注册用户 session.setAttribute("login",name); //设置session过期时间 session.setMaxInactiveInterval(10*60); request.getRequestDispatcher("admin.jsp").forward(request,response); }else{ response.sendRedirect("login.jsp"); } %> 在任意页面进行拦截,判断用户是否登录: <% Stringlogin=(String)session.getAttribute("login"); //如果session中不存在用户的登录信息,转入登录页面 if(login==null){ response.sendRedirect("login.jsp"); return; }%> 2.6总结 2.7application对象 application实现用户之间的数据共享。 application对象的常用方法: 方法名称 说明 voidsetAttribute(Stringkey,Objectvalue) 以key/value的形式保存对象值 ObjectgetAttribute(Stringkey) 通过key获取对象值 StringgetRealPath(“页面.jsp”) 返回页面所在服务器的真实路径 2.7.1统计网站访问量 1.效果 实现统计网站访问量,效果如下: 2.编码 在网站访问页面loginWeb.jsp中进行统计: <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%
Integercount=(Integer)application.getAttribute("count");
if(count!
=null){
count=1+count;
}else{
count=1;
}
application.setAttribute("count",count);
%>
用户名:
密码:
在网站其他(任意的)页面showCount.jsp进行显示:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
Integeri=(Integer)application.getAttribute("count");
out.println("统计访问量:
目前有"+i+"个人访问过本网站");
%>
2.8对象的作用域
2.8.1page作用域
page作用域指本JSP页面的范围。
testOne.jsp:
<%
Stringname="page";
pageContext.setAttribute("name",name);
%>
testOne:
<%=pageContext.getAttribute("name")%>
<%
pageContext.include("testTwo.jsp");
%>
testTwo.jsp:
testTwo:
<%=pageContext.getAttribute("name")%>
访问testOne.jsp结果如下:
2.8.2request作用域
request作用域内的对象则是与客户端的请求绑定在一起(同一次请求)。
testOne.jsp:
<%
Stringname="request";
request.setAttribute("name",name);
request.getRequestDispatcher("testTwo.jsp").forward(request,response);
%>
testTwo.jsp:
testTwo:
<%=request.getAttribute("name")%>
访问testOne.jsp,结果如下:
2.8.3session作用域
session作用域:
一次会话(同一个浏览器的不同窗口之间共享数据),关闭浏览器后数据销毁。
testOne.jsp:
<%
Stringreq="request";
Stringses="session";
request.setAttribute("reqName",req);
session.setAttribute("sessionName",ses);
response.sendRedirect("testTwo.jsp");
%>
testTwo.jsp:
request:
<%=request.getAttribute("reqName")%>
session:
<%=session.getAttribute("sessionName")%>
访问testOne.jsp,结果如下:
2.8.4application作用域
application作用域:
整个Web应用程序(整个Web应用程序共享数据),重启服务器后数据销毁。
testOne.jsp:
<%
Stringapp="application";
Stringses="session";
session.setAttribute("sesName",ses);
application.setAttribute("appName",app);
response.sendRedirect("testTwo.jsp");
%>
testTwo.jsp:
session:
<%=session.getAttribute("sesName")%>
application:
<%=application.getAttribute("appName")%>
访问testOne.jsp,结果如下:
注意:
同一会话与不同会话的对比。
2.8.5总结
名称
说明
page作用域
在一个页面范围内有效,通过pageContext对象访问
request作用域
在一个服务器请求范围内有效
session作用域
在一次会话(同一个浏览器的不同窗口)范围内容有效
application作用域
在一个应用服务器(同一个Web项目)范围内有效
2.9JSP中使用cookie
视频网站观看不同视频,系统会自动记录已经浏览过的视频,历史记录。
“浏览过的视频”用之前学过的任何一个对象(application,session,…)保存都不合适。
可以使用cookie实现。
cookie是Web服务器保存在客户端的一系列文本信息。
cookie的作用:
✧对特定对象的追踪
✧实现各种个性化服务
✧简化登录(登录网站,点击记住密码,将登录信息通过cookie保存在本地客户端)
安全性能:
容易泄露信息。
2.9.1语法
创建cookie对象
CookienewCookie=newCookie(Stringkey,Stringvalue);
写入cookie
response.addCookie(newCookie);
读取cookie
Cookie[]cookies=request.getCookies();
2.9.2示例:
添加和读取cookie
添加cookie,addCookies.jsp:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%
response.addCookie(newCookie("username","Jack"));
response.addCookie(newCookie("password","123456"));
response.sendRedirect("getCookies.jsp");
%>
读取cookie,getCookies.jsp:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%
Cookie[]cookies=request.getCookies();
Stringuser="";
Stringpwd="";
if(cookies!
=null){
for(inti=0;i if(cookies[i].getName().equals("username")) user=cookies[i].getValue(); elseif(cookies[i].getName().equals("password")) pwd=cookies[i].getValue(); } } out.print("用户名: "+user+",密码: "+pwd); %> cookie对象的常用方法: 方法名称 说明 voidsetMaxAge(intexpiry) 设置cookie的有效期,以秒为单位 voidsetValue(Stringvalue) 在cookie创建后,对cookie进行赋值 StringgetName() 获取cookie的名称(key) StringgetValue() 获取cookie的值(value) intgetMaxAge() 获取cookie的有效时间,以秒为单位 2.9.3示例: 验证cookie有效期 info.jsp创建cookie: <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%
Cookienc=newCookie("info","ok");
nc.setMaxAge(60);//设置Cookie有效期为60秒
response.addCookie(nc);
response.sendRedirect("showCookie.jsp");
%>
showCookie.jsp读取cookie:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%
Cookie[]cookies=request.getCookies();
booleansign=false;//标识
if(cookies!
=null){
for(inti=0;i if(cookies[i].getName().equals("info")){ sign=true; out.print("读取Cookie的值: "+cookies[i].getValue()); } } } if(! sign){ out.print("超过Cookie有效期,无法读取Cookie"); } %> 2.9.4作业 使用cookie实现当用户第一次登录时需要输入用户名和密码。 关闭浏览器后,在5分钟内,无需再次登录,直接显示欢迎页面。 实现思路: (1)用户登录后,创建cookie保存用户信息。 (2)设置cookie的有效期为5分钟。 (3)在登录页循环遍历cookie数组,判断是否存在指定名称的cookie,若存在则直接跳转至欢迎页面。 提示: 使用setMaxAge(5*60)设置cookie的有效期。 2.9.5cookie与session的对比 2.10总结 第3章三层模式 3.1三层模式的划分 3.2三层之间的关系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaWeb 教学 手册