JSP笔记

<%! %>    声明全局变量
<% %>    包含java语句块
<%= %>    变量输出
<!-- html注释,客户端可以显示 -->
<%-- jsp注释,客户端不可以显示 --%>
JSP指令元素
1、page指令,主要用来设定JSP页面的全局属性,该配置将作用于真个JSP页面,甚至包括静态包含的文件。语法:
        <%@page 属性1="属性值1" 属性2="属性值2" %>。
            language属性---例:<%@page language="java"%>,目前暂时只能使用java语言。
            extends属性---指定该JSP页面生成的Servlet是继承于哪个父类,设定时必须指定该类的全名,即包名加类名。很少使用,慎用!否则可能限制到JSP的编译能力。语法:<%@page extends="继承的父类"%>
            import属性---指定导入的java包,有些包可以不用导入,如java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*;语法:<%@page import="导入的包"%>。例:<%@page import="java.util.*"%>   <% Date now = new Date();%>
            session属性---指定该JSP页面中是否可以使用session对象。默认值为true。语法:<%@page session="true|false"%>
            buffer属性---指定输出流是否具有缓冲区,以及设置缓冲区大小。语法:<%@page buffer="none | 40KB"%>
            autoFlush属性---指定缓冲区是否自动进行强制输出。默认值为true。语法:<%@page autoFlush="true | false"%>
            isThreadSafe属性---指定该JSP文件是否支持多线程使用。默认值为true。语法:<%@page isThreadSafe="true | false"%>
            info属性---用来设置该JSP文件的相关信息,可以是任何的信息字符串,并通过Servlet.getServletInfo方法来取得该信息。语法:<%@page info="JSP文件相关信息"%>
            errorPage属性---用来设置如果当前JSP文件发生异常错误时,网页重新跳转到能够处理异常的JSP文件。语法:<%@page errorPage="错误处理页面"%>
            isErrorPage属性---用来指定该JSP文件是否为能够处理异常的JSP文件,默认值为false。语法:<%@page isErrorPage="true | false"%>
            contentType属性---用来指定该JSP文件的MIME格式,以及网页编码格式。语法:<%@page contentType="text/html;charset=gb2312"%>
            pageEncoding属性---用来指定网页的的编码格式。语法:<%@page pageEncoding="gb2312"%>
            isELIgnored属性---用来指定该JSP文件是否支持EL表达式。语法:<%@page isELIgnored="true | false"%>

2、include指令,用于在JSP文件中插入一个包含文本或者代码的文件。被包含的文件所执行的结果插入到JSP文件放置include指令的位置。只有当被包含文件执行完成。该JSP文件才会恢复执行。语法:<%@include file="被包含文件地址"%>。例:<%@include file="content.txt"%>    content.txt:<%@page contentType="text/html;charset=gb2312"%> JSP世界欢迎您
    
3、taglib指令,用来声明此JSP文件使用了自定义的标签,同事引用指定的标签库以及设置标签库的前缀。语法:<%@taglib uri="URIToTagLibrary" prefix="tagPrefix"%>,其中uri属性用来指定标签库的存放位置,prefix属性用来指定该标签库使用的前缀。例:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    <c:out value="Hello world!" />

JSP动作元素,可以用来动态的包含文件、网页跳转以及使用JavaBean组件等等。语法:<jsp:XXX />
第一类与存取JavaBean有关的,三个动作元素:<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>
第二类是JSP基本动作元素。六个动作元素:<jsp:include>、<jsp:forward>、<jsp:param>、<jsp:plugin>、<jsp:params>、<jsp:fallback>
第三类是JSP2.0新增的动作元素,主要与JSP document有关。六个动作元素:<jsp:root>、<jsp:declaration>、<jsp:scriptlet>、<jsp:expression>、<jsp:text>、<jsp:output>
第四类也是新增动作元素,主要用来动态生成XML元素标签的值。三个动作元素:<jsp:attribute>、<jsp:body>、<jsp:element>
第五类也是新增动作元素,主要用来Tag File中,两个动作元素:<jsp:invoke>、<jsp:doBody>

1、<jsp:include>用来包含静态和动态的文件,如果被包含的文件为静态的,则只是单纯的加到JSP页面中,不进行处理;如果被包含文件为动态的,则会先处理,然后将结果加到JSP页面中。语法:<jsp:include page="包含文件URL地址" flush="true | false" />,默认为false。
                    <jsp:include>和<%@include %>的区别
            使用<%@include%>指令元素只是将页面的内容静态的包含进来,如果被包含的文件中有JSP代码,则会执行该代码,而不管该文件是否为动态文件。先包含再处理
            <jsp:include>动作元素动态的包含文件,如果被包含的文件是静态的,则直接将内容包含进行,不会进行处理;而如果被包含的文件是动态的,则先执行,再将结果包含进来并显示。先处理再包含
2、<jsp:forward>用来转移用户的请求,从一个页面跳转到另一个页面。这种跳转为服务器端跳转,所以用户的地址栏不会发生任何的变化。语法:<jsp:forward page="跳转文件URL地址" />
3、<jsp:param>用来传递参数,一般与<jsp:include>、<jsp:forward>联合使用。语法:<jsp:param name="参数名" value="参数值" />。例:<jsp:include page="contentDemo.jsp"><jsp:param name="age" value="19" /></jsp:include>    <% String strAge = request.getParameter("age");%>

JSP内置对象,九个对象分为如下四类。
第一类:与Servlet有关,包括pagehe config两个对象。
第二类:与Input/Output有关,包括out、request和response三个对象。
第三类:与Context有关,包括session、application和pageContext三个对象。
第四类:与Error有关,仅包括exception。
    属性的保存范围:在JSP中可以通过setAttribute()和getAttribute()两个方法设置和取得属性,从而实现数据的共享。同样JSP中提供四种属性保存范围,为page、request、session以及application。
        例,<%-- 在page范围设置属性 --%><% pageContext.setAttribute("name","James"); %>
               <%-- 取得page范围属性 --%><% String strName = (String)pageContext.getAttribute("name"); %>
                request.setAttribute()    session.setAttribute()  application.setAttribute()   
request对象   例:request接收多个参数,<% Enumeration e = request.getParameterNames(); while(e.hasMoreElements()){ 
                                                            String str = (String)e.nextElement(); String strRequest = request.getParameter(str);
                                                            out.println(str + "参数值为:" + strRequest + "<br>");} %>
        例:request获得参数的所有参数值,<% String[] strArr = request.getParameterValues("sport");
                                                                            for(String str : strArr) { out.println(str); }%>
        例:request获得封装所有参数值的Map,<% Map mapParamter = request.getParameterMap();
                                                                                String[] strUsername = (String[])mapParamter.get("username");
                                                                                out.println("用户名:"+strUsername[0] +"<br>"); 
                                                                                String[] strPassword = (String[])mapParamter.get("password");
                                                                                out.println("用户名:"+strPassword[0] +"<br>"); 
                                                                                String[] strSport = (String[])mapParamter.get("sport");
                                                                                for(String sport: strSport) { out.println(sport);
                                                                            %>
response对象    用来给客户端传送输出信息,设置表头等。常用方法为页面跳转、自动刷新、自动跳转。
        例:<% response.sendRedirect("DirectPage.jsp");%>    属于客户端跳转
        例:<% response.addIntHeader("Refresh",10);%>
        例:<% response.setHeader("Refresh","10;URL=http://www.baidu.com");%>
out对象    用于页面输出、获得缓冲区使用大小
        例:<% int all = out.getBufferSize(); int remain = out.getRemaining(); int use = all - remain; %>
session对象    用来表示拥护的会话状况,一般用于保存用户的各种信息,直到生命周期超时或被认为释放掉为止。常用方法:设置并获取session生命周期、获得session其他信息。
        例:<% session.setMaxInactiveInterval(60*2); int time = session.getMaxInactiveInterval(); %>
        例:<% long creatTime = session.getCreationTime(); String sessionID = session.getId();
                      long lastTime = session.getLastAccessedTime(); boolean isnew = session.isNew(); %>








采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值