仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 482|回复: 14
打印 上一主题 下一主题

[学习教程] JAVA网页编程之JSP页面不克不及革新、避免革新的成绩总结

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:21:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。js|革新|成绩|页面JSP页面不克不及革新、避免革新的成绩总结
<1>假如请求当产生选择、删除、修正等操纵时,表单革新,必要加上:window.returnValue=0.
比方leadershipleader_ctl.jsp
<bodyleftmargin="0"topmargin="0">
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
<%@pageimport="leader.*"%>
<%

LeaderBeanleader=newLeaderBean();
StringstrUserID=request.getParameter("Key");
session.setAttribute("EmployUserID",strUserID);
//System.out.println("strUserID:"+strUserID);
if(leader.PostEdit(request)){
//System.out.println("me5");
out.println("<script>window.returnValue=0;window.close();</script>");
return;
}
else{
if(request.getParameter("Oper")!=null){
if(request.getParameter("Oper").equals("delLeader")){
out.println("<script>alert("+leader.LastOperMsg+");window.returnValue=0;</script>");
//return;
}
if(request.getParameter("Oper").equals("setLeader")){
//System.out.println("me3");
out.println("<script>alert("+leader.LastOperMsg+");window.returnValue=0;window.close();</script>");
//System.out.println("me4");
//return;
}
if(request.getParameter("Oper").equals("delCompetence")){
////System.out.println("strUserID:"+strUserID);
out.println("<script>alert("+leader.LastOperMsg+");history.back();</script>");
//System.out.println("me4");
//return;
}
if(request.getParameter("Oper").equals("addCompetence")){
//System.out.println("addCompetence1");
out.println("<script>alert("+leader.LastOperMsg+");history.back();</script>");
//System.out.println("addCompetence2");
//return;
}
else{
if(request.getParameter("Oper").equals("qx")){
out.println("<script>alert("+leader.LastOperMsg+");window.returnValue=0;window.close();</script>");
//return;
}
else{
//System.out.println("me6");
out.println("<script>alert("+leader.LastOperMsg+");window.close();</script>");
//return;
}//3e
}
}
}
%>

<2>假如请求每隔一段工夫从服务器上主动革新,必要加上:
(1)种办法:
<%response.setHeader("Refresh","15");%>
15妙革新一次
(2)种办法:
主动革新网页
在HTML的与之间到场上面这段代码,则在5分钟以后正在扫瞄的页面将会主动变成target.html这一页。代码中300为革新的提早工夫,以秒为单元。targer.html为你想转向的方针页,若为本页则为主动革新本页。
<metahttp-equiv="refresh"content="300;url=target.html">

(3)种办法:演示效果:本页将在划定的工夫主动革新,代码提醒:将上面的代码复制到〈head〉区
<script>
<!--
varlimit="0:15"//修正革新工夫

if(document.images){
varparselimit=limit.split(":")
parselimit=parselimit[0]*60+parselimit[1]*1
}
functionbeginrefresh(){
if(!document.images)
return
if(parselimit==1)
window.location.reload()
else{
parselimit-=1
curmin=Math.floor(parselimit/60)
cursec=parselimit%60
if(curmin!=0)
curtime=curmin+"分"+cursec+"秒后重刷本页!"
else
curtime=cursec+"秒后重刷本页!"
window.status=curtime
setTimeout("beginrefresh()",1000)
}
}
window.onload=beginrefresh
//-->
</script>


<2>避免从服务器上主动革新,必要加上:
<%@pagecontentType="text/html;charset=gb2312"%><%@pagelanguage="java"import="java.io.*"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>计数器</title></head><%!//同步更新计数器synchronizedvoidcounter(){ServletContextapplication=getServletContext();//机关application对象(可选)StringszPath=application.getRealPath("/");//失掉以后路径szPath=szPath+"hits.txt";//计数器文件0-9999999999999...

计划2
jJsp计数器,统一电脑10秒内防革新
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<metaname="GENERATOR"http-equiv="refresh">
<title>无题目文档</title>
<linkhref="CSS/counter.css"rel="stylesheet"type="text/css">
</head>
<bodybgcolor="#FFFFFF">
<!--startcounter-->
<divalign="center">
<%@pageimport="com.ckj.counter.*,java.io.*,java.util.Date"%>
<%Counterct=newCounter();
Stringcount="0";
Stringcounterid="0";
try{
//StringstrDirPath=newFile(application.getRealPath(request.getRequestURI())).getParent();
//System.out.println("目次的相对路径:"+strDirPath+"<br/>");
StringstrFullPath=session.getServletContext().getRealPath("/");
System.out.println(strFullPath);
ct.path=strFullPath+"/counter/count.txt";
//1session存储工夫值,
//2下次对照一下
if(session.getAttribute("counttime")==null){//假如初度会见
count=ct.doCount();
//System.out.println("--------盘算前11--------"+System.currentTimeMillis());
session.setAttribute("counttime",String.valueOf(System.currentTimeMillis()));}
else
{//假如,革新距离凌驾
//System.out.println("--------革新之差--------"+(System.currentTimeMillis()-Long.valueOf((String)session.getAttribute("counttime")).longValue()));
//年夜于10秒
if((System.currentTimeMillis()-Long.valueOf((String)session.getAttribute("counttime")).longValue())>9000){
//System.out.println("--------盘算后--------"+System.currentTimeMillis());
count=ct.doCount();
//session.removeAttribute("counttime");
session.setAttribute("counttime",String.valueOf(System.currentTimeMillis()));
}
//小于10秒
else
count=ct.getCount();
}


}catch(Exceptione){

}

//假如10秒内革新,不计数
if(true){
}
%>
你是本站第<spanclass="font12bgred"><%=count%></span>位会见者!
<!--endcounter-->
</div>
</body>
</html>

计划3、防革新图形计数器(已调试)
实例6:防革新图形计数器(已调试)程序申明:前次做的计数器没有接纳对文件的读写操纵,固然用到了javabean可是并没有效到scope中的几个参数:appliction,page,session这些参数分离代表了bean的存活的周期,appliction>session>page我们使用这个道理来避免用户革新从而进步会见次数的毛病。程序筹办:假如你利用的是apache+resin那末请你在resin的根目次下创建一个文本文件counter.txt并在内里恣意写一个数字,好比100之类的。其次,请创建一个文件夹用来保留这个程序的一切文件,并在该文件夹里创建一个子目次images,用来保留10张图片,图片格局为gif,图片称号从0--9,图片内容就是0--9十个数字,分离与图片称号对应便可了。程叙文件:index.jsp,addone.java,display.javaindex.jsp用来显现记录了局。addone.java是一个javabean用来写记录到文件display.java也是一个javabean用来读取记录到index.jsp程序源码:index.jsp<%@pageimport="popeyelin.*"contentType="text/html;charset=gb2312"language="java"%>
<html>
<head>
<title>JSP图形防革新计数器</title>
</head>
<body>
<jsp:useBeanid="a"scope="page"class="popeyelin.addone"/>
<jsp:useBeanid="b"scope="page"class="popeyelin.display"/>
已有
<%b.counter();
for(inti=9;i>=0;i--)out.print(b.img[i]);
%>
团体会见这个页面
</body>
</html>addone.javapackagepopeyelin;
importjava.io.*;
importjava.lang.*;
publicclassaddone{
privateStrings=newString();//创建数组变量sl
publicvoidaddone(){
try{
BufferedReaderbuff=newBufferedReader(newFileReader("conuter.txt"));
Strings=buff.readLine();
inti=Integer.parseInt(s);//将字符串变量s转化成整形
i++;
buff.close();//封闭对象
PrintWriterpw=newPrintWriter(newFileWriter("oounter.txt"));
Stringtemp=Integer.toString(i);//将整形变量i转化成字符型
pw.print(temp);
pw.close();
}
catch(IOExceptione){
System.out.println(e.toString());
}
}
}display.java
packagepopeyelin;
importjava.io.*;
importjava.lang.*;
publicclassdisplay{
publicString[]img=newString[10];
publicvoidcounter(){
try{
BufferedReaderbuff=newBufferedReader(newFileReader("counter.txt"));
Strings=buff.readLine();
inti=Integer.parseInt(s);
intst=10;
intj=0;
while(j<=9){
img[j]=Integer.toString(i%st);
img[j]=img[j]+".GIF";
img[j]="images/"+img[j];
img[j]="<imgsrc="+img[j]+">";
img[j]=img[j]+"</img>";
i/=10;
j++;
}
}
catch(IOExceptione){
System.out.println(e.toString());
}
}
}编译addone.java和display.java后会天生一个文件夹,popeyelin,把这个文件夹拷贝到WEB-INF/class目次下,假如不存在,请手动创建。运转index.jsp你就能够看到这个图片计数器了程序剖析:重点就在于对文件的读写,我们看以下代码BufferedReaderbuff=newBufferedReader(newFileReader("conuter.txt"));
Strings=buff.readLine();
inti=Integer.parseInt(s);//将字符串变量s转化成整形
i++;
buff.close();//封闭对象
PrintWriterpw=newPrintWriter(newFileWriter("oounter.txt"));
Stringtemp=Integer.toString(i);//将整形变量i转化成字符型
pw.print(temp);
pw.close();我们假如要对文件举行读写操纵,就必需前后创建2个对象,来对文件分离举行读和写并且要注重,我们从文件里读出来的工具是字符串型的,假如我们要对他举行修正必需先转换成int型,要用到integer.parseint(),假如我们要先工具到文件,一样要先将int转换成string用integer.tostring(),写文件用到pw.print()要写的内容能够保留在变量里,如:pw.print(temp),也能够间接写,如:pw.print("hello,world");记着,写完必定要关毕对象。pw.close()
计划4、用JSP制造页面防革新计数器(PHP)</head>
<body>
<%@pageimport="java.io.*"%>
<%
StringcurrentRecord=null;//保留文本的变量
BufferedReaderfile;//BufferedReader对象,用于读取文件数据
StringnameOfTextFile="e:count.txt";
//读取
file=newBufferedReader(newFileReader(nameOfTextFile));
StringreadStr=null;
intwriteStr=0;//假如计数文本中的计数值为空则让它显现时酿成1并写进
try{readStr=file.readLine();}
catch(IOExceptione)
{System.out.println("读取数据毛病.");}
if(readStr==null)readStr="没有任何纪录";
//判别cookie,第一次上岸时加1,革新时不累计计数
elseif(request.getHeader("Cookie")==null)
{writeStr=Integer.parseInt(readStr)+1;}
else{writeStr=Integer.parseInt(readStr);}
//写进时把持由于革新引发的反复计数
if(request.getHeader("Cookie")==null){
try{
PrintWriterpw=newPrintWriter(newFileOutputStream(nameOfTextFile));
pw.println(writeStr);
pw.close();}
catch(IOExceptione){
out.println(e.getMessage());}
}
%>
<palign="center">您是傲雪冷梅网站的第<b><fontcolor="red"><%=writeStr%></font></b>位主人。</p>
</body>
</html>

2006-09-12


C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.
莫相离 该用户已被删除
沙发
发表于 2015-1-20 20:54:10 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
透明 该用户已被删除
板凳
发表于 2015-1-25 11:07:50 来自手机 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
金色的骷髅 该用户已被删除
地板
发表于 2015-1-31 15:42:39 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
再现理想 该用户已被删除
5#
发表于 2015-2-1 11:52:38 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
分手快乐 该用户已被删除
6#
发表于 2015-2-1 17:23:36 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
飘飘悠悠 该用户已被删除
7#
发表于 2015-2-6 09:40:47 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
若天明 该用户已被删除
8#
发表于 2015-2-6 16:55:46 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
飘灵儿 该用户已被删除
9#
发表于 2015-2-6 20:05:46 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
小魔女 该用户已被删除
10#
发表于 2015-2-7 11:36:09 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
小妖女 该用户已被删除
11#
发表于 2015-2-8 23:03:58 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
谁可相欹 该用户已被删除
12#
发表于 2015-2-26 12:18:00 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
只想知道 该用户已被删除
13#
发表于 2015-3-8 13:14:22 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
深爱那片海 该用户已被删除
14#
发表于 2015-3-15 23:00:45 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
再见西城 该用户已被删除
15#
发表于 2015-3-22 17:42:56 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 15:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表