JSP计数器
1.JSP弥补了servlet页面显示的不足;jsp运行时候需要转化为servlet,本质上就是servlet;tomcat下的work目录下有jsp的servlet和对应的class文件;下次再调用同一个jsp的话速度就快多了。
2.查看jsp对应的servlet文件可知道jsp集成HttpJspBase类,向上实现HttpJspPage接口,继续JspPage,继续servlet接口。
3.<!-- -->html注释,只注释html,虽然对java也有效,不过在源代码里会有体现的,影响安全性,换成<%-- --%>注释java安全;<%-- --%>JSp多行注释
4.指令(directive);page,include。taglib;
<%@ page language pageEncoding contentType(输出的类型,所以可以两种编码)="text/html;charset=utf-8" import session="true"(设置会话是否可用) isErrorPage="true" errPage="/error.jsp"(当前页面错误的话转到该页面)%>
<%@ include file(引入版权信息)%>,若是动作指令则<jsp:include page="" />
看看生成的servlet源文件可发现,include指令只是吧文件完全包含进来了,而后者是采用了类库的那些引入机制引入的。
也可以getRequestDispatcher.forward.
例子尾部
<br><a href="http://www.cnblogs.com/hxsyl/"> www.v512.com</a></body></html>
同样头部信息也只需要html的上半部分,同时,jsp页面只需要写html主体。
5.声明(declarartion):<%! %>,在这里面生命的变量对整个jsp页面有效;在<% %>生命的只对方法有效。
6.表达式;<%= %>
7.简单验证
onSubmit="return validate(this)"function validate(myform){if(myform.username.value.length == 0){alert("请填写用户名!");myform.username.focus();return false;}if(myform.password.value.length == 0){alert("请填写密码!");myform.password.focus();return false;}return true;}
8.form表单里action="<%=request.getContextPath()%>/loginHandler.jsp"
<%=request.getContextPath()%>是解决相对路径的问题,可返回站点的根路径。
<a href="<%=request.getContextPath()%>/XXX.jsp"> //这样获得的是绝对路径
<a href="XXX.jsp"> //这样获得的是相对路径
<a href="<%=request.getContextPath()%>/XXXX.jsp"> 能够更有效的防治连接的失效
有时候也可以在head里设置html:base
如果想得到工程文件的实际物理路径,可通过:<%=request.getRealPath("/")%>,这样页面就会输出:d:/web
现在request.getRealPath("") 这个方法已经不推荐使用了
可以使用request.getSession().getServletContext().getRealPath() 得到工程文件的实际物理路径,也就是绝对地址
9.计数器需要持久化,通过图片显示
public String transform(long count){String countNumber=count+"";String newNumber="";for(int i=0;i<countNumber.length();i++){newNumber=newNumber+"<img src=\"images\\"+countNumber.charAt(i)+".gif\">";}return newNumber;}long count=CountFileHandler.readFile(request.getRealPath("/")+"count.txt");if(session.getAttribute("visited")==null){session.setAttribute("visited","y");//设置一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。//让多长时间内刷新页面计数器不增加session.setMaxInactiveInterval(60*60*24);count=count+1;CountFileHandler.writeFile("/count.txt",count);}
10.定制错误页面,除了制定isErrorPage或者errorPage外还可以定制,404,505.
配置web.xml
<error-page><error-code>404</error-code><location>/error404.jsp</location></error-page>
JSP计数器的更多相关文章
- JSP内置对象(下)
JSP中共有9大内置对象: out对象 requset对象 response对象 session对象 pageContext对象 application对象 config对象 page对象 excep ...
- java web 学习 --第七天(Java三级考试)
第六天的学习内容如下:http://www.cnblogs.com/tobecrazy/p/3462244.html application application对象的方法与应用: ① setA ...
- 【JSP实例】指定用户计数器
不同的用户访问次数是不一样的,因此对于每一个用户的访问次数都要进行统计,以适应需要. 用户登陆的Login.html的源文件: <html> <head> <title& ...
- 2017.11.4 JavaWeb-----基于JavaBean+JSP求任意两数代数和(改进的在JSP页面中无JSP脚本代码的)+网页计数器JavaBean的设计与使用
修改后的JSP中不含有JSP脚本代码这使得JSP程序的清晰性.简单 1.设计JavaBean 的Add.java 类 package beans; public class Add { private ...
- JSP点击计数器
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/hits-counter.html: 一个点击计数器能得知关于网站某个特定页面的访问量.假设人们第一次登陆 ...
- JSP简单练习-一个简单的计数器
在JSP中,在"<%"和"%>"之间书写的程序代码成为java程序片. 一个JSP页面中能够有多个java程序片. 要注意的是,在Java程序片中声 ...
- JSP简单练习-站点计数器
<%@ page contentType="text/html;charset=gb2312" %> <%@ page import="javax.se ...
- Jsp的九大对象,七大动作,三大指令
jsp九大内置对象:1>out 向客户端输出数据,字节流.如out.print(" dgaweyr"); 2>request 接收客户端的http请求.String g ...
- 用application实现一个网页的浏览计数器
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
随机推荐
- 283 Move Zeroes 移动零
给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序.例如, 定义 nums = [0, 1, 0, 3, 12],调用函数之后, nums 应为 [1, 3, ...
- [转]ASP.NET MVC HtmlHelper扩展之Calendar日期时间选择
本文转自:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-htmlhelper-calendar-datetime-select/ 这里我们扩展HtmlHe ...
- 【hive】hive表很大的时候查询报错问题
线上hive使用环境出现了一个奇怪的问题,跑一段时间就报如下错误: FAILED: SemanticException MetaException(message:Exception thrown w ...
- Selenium常用方法及函数
新建实例driver = webdriver.Chrome() 1.获取当前页面Url的函数方法:current_url实例:driver.current_url 2.表单的提交方法:submit解释 ...
- 拒绝了对对象 'data'(数据库 'xxx',所有者 'dbo')的 SELECT 权限
拒绝了对对象 'data'(数据库 'xxx',所有者 'dbo')的 SELECT 权限解决的方法:1>在数据库里相应的用户权限中,把db_denydatareader的复选框的勾去掉.很多初 ...
- 个人觉得比较好用的chrome插件
印象笔记·悦读 "悦读"可使博文.文章和网页变得简明而又易于阅读.将其保存至印象笔记以便随时随地阅读. Anything to QRcode 通过右键菜单或地址栏按钮将当前页面地址 ...
- 安卓app测试之Monkeyrunner
一.MonkeyRunner简介 MonkeyRunner提供了系列的API ,MonkeyRunner可以完成模拟事件及截图操作 ,分为以下三类: MonkeyRunner:用来连接设备或模拟器的 ...
- python队列的实现
队列是一种抽象数据结构,具有以下特点: (1)具有先进先出的特性(FIFO) (2)拥有两种基本操作,即加入和删除,而且使用front和rear两个指针来分别指向队列的前端和末尾. 队列的基本操作 c ...
- C/C++格式化输入,输出
C/C++格式化输入,输出 1.C语言 1. 语言函数 scanf(); printf(); sscanf() --> 不安全 sscanf_s() ---> 安全 sprintf() - ...
- 关于C++中字符串输入get与getline的区别
最近使用C++中自己老是忘记的一个点,get与getline的区别. 1.get与getline get和getline所属iostream类,作用是读取一整行,通过换行符确定读取结束,他们都可以读取 ...