JavaWeb6Word格式.docx

上传人:b****1 文档编号:4908270 上传时间:2023-05-04 格式:DOCX 页数:31 大小:257.06KB
下载 相关 举报
JavaWeb6Word格式.docx_第1页
第1页 / 共31页
JavaWeb6Word格式.docx_第2页
第2页 / 共31页
JavaWeb6Word格式.docx_第3页
第3页 / 共31页
JavaWeb6Word格式.docx_第4页
第4页 / 共31页
JavaWeb6Word格式.docx_第5页
第5页 / 共31页
JavaWeb6Word格式.docx_第6页
第6页 / 共31页
JavaWeb6Word格式.docx_第7页
第7页 / 共31页
JavaWeb6Word格式.docx_第8页
第8页 / 共31页
JavaWeb6Word格式.docx_第9页
第9页 / 共31页
JavaWeb6Word格式.docx_第10页
第10页 / 共31页
JavaWeb6Word格式.docx_第11页
第11页 / 共31页
JavaWeb6Word格式.docx_第12页
第12页 / 共31页
JavaWeb6Word格式.docx_第13页
第13页 / 共31页
JavaWeb6Word格式.docx_第14页
第14页 / 共31页
JavaWeb6Word格式.docx_第15页
第15页 / 共31页
JavaWeb6Word格式.docx_第16页
第16页 / 共31页
JavaWeb6Word格式.docx_第17页
第17页 / 共31页
JavaWeb6Word格式.docx_第18页
第18页 / 共31页
JavaWeb6Word格式.docx_第19页
第19页 / 共31页
JavaWeb6Word格式.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JavaWeb6Word格式.docx

《JavaWeb6Word格式.docx》由会员分享,可在线阅读,更多相关《JavaWeb6Word格式.docx(31页珍藏版)》请在冰点文库上搜索。

JavaWeb6Word格式.docx

Thread.sleep(3000);

}catch(InterruptedExceptione){

e.printStackTrace();

}

resp.getWriter().print("

YOurnameis:

"

+name+"

"

+this);

}

}

ServletContext对象。

●ServletContext对象

•一个web项目只有一个ServletContext对象。

•当tomcat启动时,由tomcat创建。

•全局共享数据。

●与所有登录的用户共享数据。

•功能:

•实现聊天。

•实现统计页面的点击量。

•获取本地数据并显示,如图片。

1.2、ServletContext作为另一个域对象

可以保存数据:

所有的域对象:

setAttribute(“name”,Object);

保存某个对象。

getAttribute(“name”):

object–获取这个域对象的中的值。

removeAttribute

getAttributeNames

1.3、获取这个域对象的方式:

1:

通过ServletConfig获取这个域对象

ServletContextapplication=ServletConfig.getServletContext();

也可以在Request中获取

ServletContextapplication=request.getSession().getServletContext();

1.4、功能–共享数据

这个程序中,所有的组件中(Servlet,jsp,filter.listener)就可以共享数据

以下是共享数据的基本示例:

代码如下:

先向里面保存数据

publicclassCtx1ServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

response.setContentType("

text/html;

charset=UTF-8"

PrintWriterout=response.getWriter();

ServletContextapplication=getServletConfig().getServletContext();

if(application.getAttribute("

)==null){

Randomrandom=newRandom();

Stringstr="

保存的数是:

+random.nextInt(1000);

//将这个随机数

application.setAttribute("

str);

out.print("

放成功了:

+str);

}else{

已经存在了数据"

out.print("

<

ahref='

javascript:

window.history.go(-1);

'

>

返回<

/a>

在第二个Servlet中获取数据:

publicclassCtx2ServletextendsHttpServlet{

//直接从ServletContext中获取数据

ServletContextsc=request.getSession().getServletContext();

//获取数据

Stringstr=(String)sc.getAttribute("

22:

保存所有登录的用户共享的数据。

功能1:

计算点击量:

publicclassCountServletextendsHttpServlet{

//每一次来访问这个方法,都是点击量+1

ServletContextapplication=getServletContext();

//先从Application中取数据

Integercount=(Integer)application.getAttribute("

count"

//如果是第一个人来访问则为null

if(count==null){

count=1;

count++;

//放回到applicatioin

application.setAttribute("

count);

out.println("

!

DOCTYPEHTMLPUBLIC\"

-//W3C//DTDHTML4.01Transitional//EN\"

HTML>

<

HEAD>

TITLE>

AServlet<

/TITLE>

/HEAD>

BODY>

这是一个新的信息,。

这个新闻被点击了:

+application.getAttribute("

));

/HTML>

out.flush();

out.close();

为了保证数据的原子性,应该同步,但在doGet方法k使用同步又很慢:

就应该考虑开一个线程:

//每一次来访问这个方法,都是点击量+1

finalServletContextapplication=getServletContext();

newThread(){

publicvoidrun(){

newAddOne(application).increment();

};

}.start();

+application.getAttribute("

//在这个代码中添加1

classAddOne{

privateServletContextapplication;

publicAddOne(ServletContextsc){

this.application=sc;

publicsynchronizedvoidincrement(){

//先从Application中取数据

//如果是第一个人来访问则为null

if(count==null){

count=1;

}else{

//放回到applicatioin

count);

功能2:

实现一个聊天程序:

第一步:

开发一个servlet先写出一个表单:

publicclassChatServletextendsHttpServlet{

//直接去请求doPost,只有用户第一次来这个页面时才会走这个doGet方法

doPost(request,response);

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

//1:

写出一个表单

Stringform="

formaction='

ChatServlet'

method='

post'

+

"

发言:

inputtype='

text'

name='

msg'

/>

submit'

value='

发送'

/form>

;

form+="

hr/>

out.print(form);

第二步:

生成一个文本域

第三步:

接收参数–完整的代码如下:

packagecn.oracle.count;

importjava.io.PrintWriter;

importjava.text.SimpleDateFormat;

importjava.util.Date;

SimpleDateFormatsdf=newSimpleDateFormat("

HH:

mm:

ss"

//接收参数

request.setCharacterEncoding("

UTf-8"

Stringmsg=request.getParameter("

msg"

if(msg!

=null&

&

!

msg.trim().equals("

)){//是否为null

//获取用户的ip

Stringip=request.getRemoteAddr();

ip=ip.substring(ip.lastIndexOf("

."

)+1);

Stringtime=sdf.format(newDate());

msg=ip+"

("

+time+"

):

+msg;

//将参数放到application,先获取以前有没有人说话

Stringmsgs=(String)getServletContext().getAttribute("

msgs"

if(msgs==null){

msgs=msg;

}else{

msgs+="

\r\n"

}

//再放回到app

getServletContext().setAttribute("

msgs);

StringmsgBox="

textareareadonlystyle='

width:

300px;

height:

400px;

+getServletContext().getAttribute("

+"

/textarea>

out.print(msgBox);

2:

ServletContext获取项目的真实的目录

java.lang.String

getRealPath(java.lang.String 

path)

ReturnsaStringcontainingtherealpathforagivenvirtualpath.

获取项目的真实的路径。

基本的示例:

publicclassRealpathServletextendsHttpServlet{

你的项目的真实的路径为:

+getServletContext().getRealPath("

/index.jsp"

br/>

/WEB-INF"

示例:

显示某个目录下所有的图片:

publicclassImgServletextendsHttpServlet{

获取这个目录

Stringpath=getServletContext().getRealPath("

/imgs"

//2:

构造成一个file对象

Filefile=newFile(path);

//3:

就可以列出这个目录下的所有文件名

String[]fs=file.list();

StringcontextPath=request.getContextPath();

for(Stringnm:

fs){

Stringa="

+contextPath+"

/imgs/"

+nm+"

Stringimg="

imgwidth='

200'

height='

style='

margin:

3px;

border:

0px;

src='

img=a+img+"

out.print(img);

3、获取在web.xml中配置的全局的初始化参数

示例代码:

//先获取sc对象

ServletContextsc=getServletContext();

Stringname=sc.getInitParameter("

Stringaddr=sc.getInitParameter("

addr"

out.print(name+"

+addr);

2、会话技术

a)在服务器上,有一个对象,可以记录某一个特定的用户的状态。

记录用户状态的技术,会话技术。

b)因为网页HTTP协议,HTTP协议是无状态的协议。

会话跟踪技术–session

Session是某个会话(某个浏览器)相关的。

一个会话就是一个session.互不影响。

Session也是一个域对象。

-只与一个用户相关。

说明session是对某个用户相关的数据:

先开发Aservelt

publicclassAServletextendsHttpServlet{

//设置对post有效的编码

UTF-8"

//接收用户的参数

Stringname=request.getParameter("

if(name!

name.trim().length()>

=3){

你登录成功"

//将用户信息名称放到三个域中去

request.setAttribute("

name);

//获取Session

HttpSessionsession=request.getSession();

//将用户名称,也放到sesion

session.setAttribute("

name

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2