第8章、JSP页面的访问控制

合集下载

第8章 新闻发布系统

第8章 新闻发布系统

第8章新闻发布系统新闻发布系统是构成企业网站的重要组成部分,它一方面可以用来发布企业的最新公告,另外一方面可以发布与企业相关的新闻动态。

新闻发布系统一般包括添加、修改、删除以及查询新闻等功能。

8.1 网站的规划本章重点介绍建立一个具备添加、修改、删除数据库中的数据等功能的新闻发布系统的方法。

下面将分别介绍新闻发布系统的网站结构与页面设计。

8.1.1 网站结构新闻发布系统的网站结构示意图如图8-1所示,主要包括浏览者页面与管理员页面两部分,网站的首页为news.jsp。

图8-1 网站结构示意图本案例的本地站点和测试站点都架设在本地服务器。

用户既可以在Dreamweaver动态网站环境下按<F12>键预览网页,也可以在启动IE浏览器后输入网站地址http://localhost: 8080/news/news.jsp来测试网站的首页news.jsp。

8.1.2 页面设计本案例所介绍的新闻发布系统的页面包括添加公告、修改公告、删除公告等7个页面,见表8-1。

其中,浏览者只有浏览及查询公告的权限,而系统管理员则有添加、修改、删除公告信息等权限。

表8-1 新闻发布系统的页面文件8.2 数据库设计在本书所有的案例中,每个案例的文件夹下都包含一个数据库文件夹。

程序中用到的数据库均采用复制数据库文件夹的方法,还原数据库到MySQL的数据库文件夹下。

8.2.1 还原数据库1. 复制数据库文件夹到MySQL的数据库文件夹打开案例所在的文件夹,将数据库文件夹news复制到MySQL的数据库文件夹data下,如图8-2所示,即完成了数据库的还原。

图8-2 复制数据库文件夹到目标位置2. 在MySQL Query Browser中查看数据库中的表登录MySQL Query Browser,在MySQL Query Browser主界面的右侧导航中显示出已经还原的数据库news,如图8-3所示。

图8-3 已经还原的数据库双击数据库news,在展开的包含文件中显示出数据库中的数据表admins和newsdata,如图8-4所示。

jsp的功能

jsp的功能

jsp的功能JSP(JavaServer Pages)是一种用来开发动态Web页面的Java技术。

它可以将Java代码嵌入到HTML文档中,以实现更丰富的页面交互和动态数据展示功能。

以下是JSP的一些常见功能。

1. 动态页面生成:JSP可以根据用户请求,动态生成HTML页面,并将页面内容返回给浏览器。

这使得网页内容可以根据不同的条件和参数进行自适应的展示。

开发者可以在JSP中使用Java代码来处理用户请求,调用数据库、调用其他Java对象等。

2. 数据库访问:JSP可以直接连接数据库,并执行数据库操作。

通过使用Java的数据库连接API,JSP可以从数据库中查询、添加、修改和删除数据,然后将结果展示在Web页面上。

这可以实现数据的持久化和动态更新。

3. 表单处理:JSP可以处理用户提交的表单数据。

通过在JSP页面中定义HTML表单元素,并在表单的提交动作中指定JSP的URL,JSP可以接收表单数据,并对数据进行验证、处理和存储。

这些可以用来实现用户注册、登录、数据录入等功能。

4. 条件判断和循环:JSP支持使用Java的条件语句和循环语句。

这使得可以在JSP页面中根据不同的条件展示不同的内容,或者重复展示一段代码块。

通过使用if语句、switch语句和for循环等,可以实现更复杂的页面逻辑。

5. 页面重定向和转发:JSP可以将请求重定向到其他页面,或者将请求转发到另一个JSP或Servlet。

这使得可以在不同的页面之间进行跳转和协作,实现业务流程的分步处理。

6. 用户认证和会话管理:JSP提供了与用户认证和会话管理相关的内置对象。

通过这些对象,可以实现用户登录、注销、用户角色权限控制等功能。

同时,JSP还支持在页面级别和应用程序级别上进行会话管理。

7. 页面模板和复用:JSP支持使用页面模板和标签库进行页面复用。

可以将多个JSP页面中的公共部分抽取出来,形成一个模板文件,然后在其他JSP页面中引用该模板文件。

高手进阶第8章 JavaScript其他常用窗口对象

高手进阶第8章 JavaScript其他常用窗口对象

back() forward()
2、历史对象的应用实例
1 2 3
使当前的链接不写入历史列表中 使浏览器的后退按钮失效 显示历史列表中的第一个网址的网页
目录
表8-7
网址对象常用方法
2、网址对象的应用实例
目录
历史记录( 浏览器信息history 屏幕(screen)对象 窗口()对象 window)对象
1.历史对象的常用属性和方法 2.历史对象的应用实例
1、历史对象的常用属性和方法
意 义


显示浏览器的历史列表中后退一个网址的网页 显示浏览器的历史列表中前进一个网址的网页 显示浏览器的历史列表中第n个网址的网页, go(n)或go(网址) n>0表示前进,反之,n<0表示后退或显示浏览器 的历史列表中对应的“网址”网页 表8-8 历史对象常用方法
续表2 setTimeout(函数,毫秒) 指定毫秒时间后调用函数
clearInterval(id) clearTimeout(id)
scrollBy(水平像素值,垂直像素值) scrollTo(水平像素点,垂直像素点)
取消setInterval设置 取消setTimeout设置
窗口相对滚动设置的尺寸 窗口滚动到设置的位置
屏幕(screen)对象
属 height width availHeight availWidth colorDepth 表8-1 性 显示屏幕的高度 显示屏幕的宽度 可用高度 可用宽度 意 义
每像素中用于颜色的位数,其值为 1,4,8,15,16,24,32
屏幕对象常用属性
目录
浏览器信息( navigator )对象 浏览器信息 屏幕(screen )对象 窗口(window )对象

JavaWeb编程技术(沈泽刚版)教材习题参考答案

JavaWeb编程技术(沈泽刚版)教材习题参考答案

第4章Java Web编程习题解析4.1 第1章习题解析1. 略。

2. 答:URL称为统一资源定位符,URL通常由4部分组成:协议名称、页面所在主机的DNS名、可选的端口号和资源的名称。

URI称为统一资源标识符,是以特定语法标识一个资源的字符串。

URI由模式和模式特有的部分组成,它们之间用冒号隔开,一般格式如下:schema:schema-specific-partURI是URL和URN的超集。

3. 答:①是URL,①和②都是URI,③是URN4. 答:动态Web文档技术包括服务器端动态文档技术和客户端动态文档技术,前者包括CGI技术、服务器扩展技术和HTML页面中嵌入脚本技术。

其中HTML页面中嵌入脚本技术包括ASP、PHP和JSP技术。

最流行的客户端动态文档技术是在HTML页面中嵌入JavaScript脚本代码。

使用JavaScript可以设计交互式页面。

与服务器端动态文档不同,JavaScript脚本是在客户端执行的。

5. 答:Servlet是用Servlet API开发的Java程序,它运行在Servlet容器中。

Servlet容器是运行Servlet的软件,主要用来扩展Web服务器的功能。

6. 答:开发Servlet的一般步骤包括:(1)编写Servlet源程序;(2)编译;(3)将Servlet部署到Servlet容器中;(4)访问执行Servlet。

7. 答:<tomcat-install>\lib\servlet-api.jar文件。

8. 答:部署描述文件名是web.xml,它是XML文件,应该存放在Web应用程序的\WEB-INF目录中。

9. 答:当服务器找不到用户请求的资源时将发生404错误。

10. 答:JSP页面是嵌入了Java脚本元素的HTML页面。

11. 答:Servlet主要用来实现业务逻辑和控制逻辑,JSP页面主要用来实现表示逻辑。

Java Web 编程习题解析第4章 4.2 第2章习题解析1. 答:Servlet 接口定义了下面5个方法:public void init(ServletConfig config)public void service(ServletRequest request, ServletResponse response) throws ServletException, IOExceptionpublic void destroy()public ServletConfig getServletConfig()public String getServletInfo()2. 答:Servlet 是在容器中运行的组件,有一个从创建到销毁的过程,其中包括加载和实例化、初始化、提供服务以及销毁几个阶段。

(完整版)JSP页面的访问控制

(完整版)JSP页面的访问控制
alert("请填写用户名!");
return false;
}
if(form1.password.value ==null || form1.password.value==""){
alert("请填写密码!");
return false;
}
return true;
}
</script>
</head>
示例1
package s2.java.web.sg1.entity;
public class User {
private String name;//用户名
private String password;//密码
/**
*构造函数
*
* @param name用户名
* @param password密码
if (user == null) {
response.sendRedirect("login.html");
}
%>
<FRAMESET rows="20%,80%" cols="*">
<FRAME src="top.jsp" name="topFrame" scrolling="NO" marginwidth="0" marginheight="0">
}finally{
ConnectionManager.closeStatement(pStatement);
ConnectionManager.closeConnection(con);

WEB-INF目录下的jsp页面如何访问

WEB-INF目录下的jsp页面如何访问

WEB-INF目录下的jsp页面如何访问在实际开发中,很多时候,为了加强安全性及保护源代码,需要把后台的jsp页面放在WEB-INF目录下,实际上,这个目录一般都是用于存放配置文件还有jar包,类的编译文件等因为这个目录是有权限,即有访问控制的,直接在地址栏中输入该页面的Url地址或者在页面上使用超链接是不能访问的,提示404错误,即找不文件,从而把后台页面放在这个目录下相对是比较安全的,不需要写过滤器来时行非法判断了。

常见的目录结构:webRoot----login.jsp----WEB-INF-----A------index.jsp-----B------index.jspwebRoot根目录下的文件是没有访问限制的,可以随便访问,而WEB-INF目录下的文件是不能直接通过url地址访问的如何访问WEB-INF目录下的文件:只有通过转发才能访问(forward),而通过redirect 是不能访问的方法一:因此,前面也说过,把文件放在WEB-INF目录下,该项目一般都是整合了struts 框架的,从而利用struts框架的转发功能来实现跳转到WEB-INF目录下的页面。

struts.xml 配置文件中的配置如下,<result name="success">没有添加ype="redirect"属性时,默认转发<package name="qiandl" extends="struts-default"><action name="TestJbpmAction" class="TestJbpmAction"><result name="success">/WEB-INF/web/main.jsp</result></action></package>这样,就可可访问WEB-INF目录下的文件了方法二:直接在jsp页面中,使用jsp的转发标签,即<jsp:forward page="WEB-INF/web/main.jsp"/>就可以访问了注意:不能这样写:<jsp:forward page="WEB-INF/web/main.jsp">test</jsp>这样写,相当于给转发的main.jsp页面传递参数,而这种写法不符合传递参数时的jsp:forward的写法,因此会报错如下:org.apache.jasper.JasperException:/index.jsp(27,45) Expecting "jsp:param" standard action with "name" and "value" attributes带参数的写法:<jsp:forward page="WEB-INF/web/main.jsp"><jsp:param value="" name=""/></jsp:forward>另外,如果WEB-INF目录下的文件要访问外面,即webRoot目录下的css、js文件,则在WEB-INF目录下的文件中需要使用绝对路径,才能正确的引用。

JSP页面的构成

JSP页面的构成

JSP页⾯的构成JSP页⾯就是带有JSP元素的常规Web页⾯,它由静态内容和动态内容构成。

其中,静态内容指HTML元素,动态内容(JSP元素)包括指令元素、脚本元素、动作元素、注释等内容。

1、指令元素指令元素主要⽤于为转换阶段提供JSP页⾯的相关信息,指令不会产⽣任何输出到当前的输出流中,它指定了有关页⾯本⾝的信息,这些信息在请求之间⼀直保持不变。

指令元素语法为<%@ directive{attr="value"}%>。

指令元素有三种:page、include、taglib。

1)page该指令⽤于整个页⾯,定义与页⾯相关的属性,它是JSP页⾯和容器的通信员,⼀般放在JSP页⾯的第⼀⾏。

与page相关的属性如下:属性描述buffer指定out对象使⽤缓冲区的⼤⼩autoFlush控制out对象的缓存区contentType指定当前JSP页⾯的MIME类型和字符编码errorPage指定当JSP页⾯发⽣异常时需要转向的错误处理页⾯isErrorPage指定当前页⾯是否可以作为另⼀个JSP页⾯的错误处理页⾯extends指定servlet从哪⼀个类继承import导⼊要使⽤的Java类info定义JSP页⾯的描述信息isThreadSafe指定对JSP页⾯的访问是否为线程安全language定义JSP页⾯所⽤的脚本语⾔,默认是Javasession指定JSP页⾯是否使⽤sessionisELIgnored指定是否执⾏EL表达式isScriptingEnabled确定脚本元素能否被使⽤a、import="导包列表",可以多次导⼊,也可以⽤逗号分隔开。

b、language=“scriptingLangeuage”,指定在脚本元素使⽤的脚本语⾔,默认是Java。

c、contentType="cinfo",指定HTTP响应的头部的Content-Type值。

《JSP实用教程(第三版)》课后答案

《JSP实用教程(第三版)》课后答案

《JSP实用教程(第三版)》课后答案第1章 JSP简介1.安装Tomcat引擎的计算机需要事先安装JDK吗?答:需要。

2.怎样启动和关闭Tomcat服务器?答:bin目录下使用startup.bat启动Tomcat服务器。

bin目录下使用shutdown.bat 关闭Tomcat服务器。

3. Boy.jsp和boy.jsp是否是相同的JSP文件名字?答:不是4. 请在D:\下建立一个名字为water的目录,并将该目录设置成一个Web服务目录,然后编写一个简单JSP页面保存到该目录中,让用户使用虚拟目录fish 来访问该JSP页面。

答:设置方法:①建立D:\ water目录;②修改server.xml文件,在</host>上一行添加:<Context path="/fish" docBase="D:\ water" debug="0" reloadable="true"/>③使用http://localhost:8080/ fish /example1_1.jsp访问example1_1.jsp页面.5. 假设Dalian是一个Web服务目录,其虚拟目录为moon。

A.jsp保存在Dalian 的子目录sea中。

那么在Tomcat服务器(端口号8080)所在计算机的浏览器键入下列哪种方式是访问A.jsp的正确方式?A.http://127.0.0.1:8080/A.jsp B. http://127.0.0.1:8080/Dalian/A.jspC. http://127.0.0.1:8080/moon/A.jspD. http://127.0.0.1:8080/moon/sea/A.jsp 答:D6.如果想修改Tomcat服务器的端口号,应当修改哪个文件?能否将端口号修改为80?答:修改Tomcat服务器的conf目录下的主配置文件server.xml可以更改端口号.若Tomcat服务器上没有其它占有80端口号的程序,可以将其修改为80,否则不能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

<%
Integer ival = (Integer)session.getAttribute("counter");
if (ival == null)
ival = new Integer(1);
else{
第一次输出:
6
ival = new Integer(ival.intValue() + 1);
}

/
ServletContext
javax.servlet.ServletContext类,存放于服务器中,可以被所有 的客户访问。
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应 的ServletContext对象,它代表当前web应用。
由于一个WEB应用中的所有Servlet共享同一个ServletContext 对象,因此Servlet对象之间可以通过ServletContext对象来实 现通讯。
response.sendRedirect(“login.html"); } %>
在后台首页面(index.jsp)中使用include指令引用登录 验证文件
<%@ include file="checklogin.jsp"%>
/
练习
升级学生管理系统
修改登录功能,若登录成功则显示学生列表,登录失败转到 失败页面。若未登录直接访问学生列表则直接跳转到登录页 面(要求:注意安全性)
/
使用:
创建一个Cookie(在服务端创建的): Cookie cookie=new Cookie(String name,String val);
设置cookie存在的时间: cookie.setMaxAge(20); //单位为秒, 若为负值则不保存,为0则删除,为正值为保存时间。 注意:如果不设置该项,cookie将不保存。
application.setAttribute("LOGINED_USER", new ArrayList());
Object getAttribute(String key):根据键去获取application 中存放对象的值
if (application.getAttribute("LOGINED_USER") != null) { List loginedUsers = (List) application.getAttribute("LOGINED_USER");
/
Cookie
服务器在客户端保存用户的信息,比如登录名,密码 等。。。就是cookie,这些信息就像是小甜饼一样,数据 量并不大,服务器端在需要的时候可以从客户端读取。
cookies的用处:
保存用户名、密码,在一定的时间不用重新登录 记录用户访问网站的喜好(比如有无背景音乐、背景色什么
的) 网站的个性化,比如定制网站的服务,内容。
session.setAttribute("counter", ival);
第二次输出:
Байду номын сангаас
4
%>
<%=ival%>
/
总结
掌握访问控制实现的流程 掌握session和application对象的用法 会使用include指令 掌握如何在超链接中传递参数
session.setAttribute("name", "admin");
Object getAttribute(String key):根据名称去获取session中 存放对象的值
String name = (String) session.getAttribute("name");
访问控制就是基于session来完成的
如何将一个Cookie添加到客户端: response.addCookie(cookie); 如何读取cookie(从客户端读到服务器):
Cookie[] allcookies= request.getCookie(); 然后用for循环遍历 删除cookie:首先取出,cookie.setMaxAge(0);
/
如何实现访问控制
访问控制流程图:
1 用户登录

是否是注册用户 是
进入用户注 册页面
系统保存该用 户的登录信息
进入欲访问 的页面
2
用户直接访 问某个页面
系统是否保存了 该用户登录信息
进入用户登录

页面
是 显示该页面 内容
系统如何保存不同用户的登录信息?
使用JSP会话跟踪机制,可以维持每个用户的会话信息,也就是为 不同的用户保存不同的数据
服务器为每个会话创建一个HttpSession对象 每个会话对象都有一个唯一的ID 把用户的数据保存在相应的HttpSession对象内
服根务据器ID创号建服一务个器H寻tt找pSession对象 内并存把中该相对应象的的数ID据返回给用户
第二次请求把ID一 起第发一送次给请服求务器
响应
把ID发送给客户端
系统首页面(index.jsp) 1、从session中提取该用户信息
3
2、如果用户信息存在,显示首页内容
3、如果用户信息不存在,跳转到登录页面
用户已注册
/
include指令 2-1
除了首页面,其它页面中同样需要加入登录验证, 有没有办法避免冗余代码的出现?
可以将一些共性的内容写入一个单独的文件中,然后通过 include指令引用该文件,从而降低代码的冗余问题,也便 于修改共性内容
第八章 -----JSP页面的访问控制
本章目标
掌握访问控制实现的流程 掌握JSP内置对象的用法
session对象 application对象
掌握include指令 掌握如何在超链接中传递参数
/
生活中的访问控制
下载电子书时,系统会提示用户登录网站
点击下载, 系统转入登录页面
每次下载之前,系统如何判断用户是否已经登录?
/
Cookie应用
保存用户登录信息,一周内不需要重新登录
/
cookie与session的比较
存在的位置:cookie保存在客户端,session保存在服务器端 安全性:cookie的安全性比session要弱 网络传输量:cookie通过网络在客户端与服务器端传输,而session保
存在服务器端,不需要传输 生命周期(20分钟为例):
/
小结1
创建登录页面login.html
提供用户名输入框、以及登录按钮
创建登录处理页面login.jsp
如果用户名为sa,把用户名存储在session中,并跳转进 入index.jsp中
否则跳转进入login.html页面
创建页面index.jsp
如果session中没有该用户信息,跳转进入login.html中 否则显示欢迎信息
会话的使用 getSession( )
获取ses使sio用nHttpSession接口的方法,进行
对象的方 法保存数据:
getSession( true )
返回与当前关联的 true 会话,如果没有就
创建后将其返回
取出数据ge:tSession(boolean bool )
返回与当前关联
public void setAttribute(String param,Objefcatlsvealue的); 会话,如果没
}
/
小结2
升级学生管理系统
增加修改、删除功能
用超链接传递参数:
<a href=“StudentServ?id=1001”>修改</a>
/
启动IE窗口运行如下JSP,如果连续刷新5次,输出结果是什么?
重新启动一个新的IE窗口运行该JSP,如果连续刷新3次,输出结果是 什么?
<%@ page contentType="text/html; charset=GBK"%>
/
ServletContext
因为存在ServletContext中的数据会长时间的保存在服务 器,会占用内存,因此我们建议不要向ServletContext中 添加过大的数据。
servlet中,session中存放的值当关闭浏览器后就丢失了 ,而ServletContext中的则不会丢失。
/
cookie的生命周期是累计的,从创建时就开始计时,20分钟后结 束cookie就无效了
session的生命周期是间隔的,从创建时开始计时,如20分钟没有 访问过session,那么session信息无效,如果在20分钟内访问过 session,那么,它的生命周期将重新开始计算。
另外,关机会造成session生命周期结束,但是对cookie没有任何 影响。
/
session对象的存在周期
session对象的存在周期
session的创建
浏览器访问服务器时,服务器为每个浏览器创建不同的session对象
session的关闭
调用session. invalidate()方法,使session对象失效 访问时间间隔大于非活动时间间隔, session对象失效 关闭浏览器时,session对象失效
/
同一用户的不同页面共享数据的四种方法 cookies技术 sendRedirect(),转发 隐藏表单 session技术
/
已访问人数统计
升级学生信息管理系统,增加已访问人数统计功能, 具体要求如下:
在页面中增加超链接:已访问人数统计 已访问人数统计页面:显示已访问人数,以及访问者的登录名
应用:
创建:ServletContext application=this.getServletContext(); 添加属性:setAttribute(String name,Object ob); 得到值:getAttribute(String name);返回Object; 删除属性:removeAttribute(String name);
相关文档
最新文档