信息第四章-p JSP应用编程_第1页
信息第四章-p JSP应用编程_第2页
信息第四章-p JSP应用编程_第3页
信息第四章-p JSP应用编程_第4页
信息第四章-p JSP应用编程_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务:用户登录及

控制设计登录页login.jsp及处理登录提交的登录验证页dologin.jsp。进入 的操作过程是:–(1)从首页99main.jsp上点击

到lonig.jsp页,输入用户名及“进入系统”,进行登录,程序将提交登录表单到登录验证页dologin.jsp。如果用户

验证通过,就设置登录成功标志及登主界面;验证不通过,转回登录页录用户信息,转到–(2)如果用户login.jsp,重新登录。登录页面其它功能要求登录失败原因:登录验证不通过,转回登录页时,传回失败原因(例如:login.jsp?errmsg=

不正确),在login.jsp页中取到errmsg内容,并显示出来。登录有效期:用客户端浏览器的 功能,保存登录的有效期,在login.jsp页中取得客户端浏览器传来的信息,取出上次登录的有效期信息,判断是否需要登录。如果现时是在有效期内,不需要再输入登录信息,从

直接转入中取得用户信息,作为登录信息,验证后主页。登录检查控制:在系统内的各页,程序的开始部分都要判断用户是否已登录,如果是用户没有经过登录而请求系统内的页,则应终止申请页的执行,转向登录页

login.jsp。方案:技术分析与设计要点JSP执行及response对象登录信息及HTML表单登录提交及request对象登录有效期及

技术登录鉴别控制及Session对象连接数据库及登录验证JSP执行及response对象Web服务器接收到页面请求,在服务器端,程序要做各种响应处理,如:取得向发向客户端的HTML流并写入信息、设置html的head信息等。这些常用的响应相关处理方法已被封装在现存的类javax.servlet.http.HttpServletResponse中。系统为每次请求生成HttpServletResponse类的一个上下文相关的实例对象response。JSP程序通过调用内置对象response的各方法,实现各种响应功能。JSP执行及response对象例如:在login.jsp页中,实现:如果之前的登录还在有效期内,不需输入登录信息,直接重定向到dologin.jsp。重定向到

dologin.jsp的语句是:

response.sendRedirect("dologin.jsp");登录信息及HTML表单<form

name=”theform”

method="post"

action="dologin.jsp">...帐号:<INPUT

type=text

name=”loginID”value=""size=10><br>:<INPUT

type=password

name=”loginPWD”

value=""><br><input

type="submit"

name="bn_login"

value="登录">...<div>本次登录的有效期:</div><br><input

type="radio"name="loginExpire"value="0"checked>每次都登录<input

type="radio"name="loginExpire"

value="1">当天不用登录<inputtype="radio"name="loginExpire"

value="7">7天不用登录<input

type="radio"name="loginExpire"

value="30">30天不用登录...</form>登录提交及request对象login.jsp页以表单(FORM)方式向dologin.jsp页发出请求时,登录表单信息作为“请求信息”的一部分,与URL同时传到Web服务器。Web服务器收到请求,分析请求,从中取出传来的表单(Form)数据、

数据、其它客户端信息,填充到生成的内置对象request中,供被请求JSP页的程序使用。例如:从request取得表单的用户登录名

String

username=

request.getParameter("username");登录有效期及

技术用户的之前登录信息及其有效期可以在客户端本地的,采用称为的技术。每次浏览器向Web服务器发出请求时,从本地的集中检索出目标Web站点相关的,作为“网页请求”信息的一部分,一起发送到Web服务器。可以编程在服务器端取出信息,进行处理。在服务器端响应请求时,可以设置 信息,即,编程把某些数据按要求作为响应信息的一部分,传到客户端,自动写到客户端本地的集中,供下次请求时再传回Web服务器。技术发送

s=

new

("loginuser","liao74");.setMaxAge(7*24*60*60);//有效期为7天newnewresponse.add(new

);获取s();s[]

gameloginif

(games=

request.get=

null;s!=null)for(int

i=0;

i<game{ //按名称检索s.length;

i++)集中的信息if

("loginuser".equals(game

s[i].getName())){login =

game

s[i];}}if

(login !=null

&&login

.getMaxAge()>0)厅{ //跳过本页,直接转向到gamehome.jsp,进行

response.sendRedirect("gamehome.jsp");}登录鉴别控制及Session对象如何控制用户的

,防止非经验证的用户跳过登录验证,直接相关

页呢?JSP解决此类问题的方法是用内置的会话对象Session来保存用户在一次

中,多次网页请求间的状态。在本案例,

把“当前登录用户的用户名”添加到Session对象的集

合属性中,也就是,定义名为theuser一个Session属性项。具体做法是:在登录验证页dologin.jsp中,通过登录验证后,执行下面代码。session.setAttribute("theuser",

loginuser);在所有的需要检查是否已登录的页的开始处,加入如下控制程序:String

currUser=(String)session.getAttribute("theuser");if(currUser==null)//没有经过登录验证{response.sendRedirect("login.jsp");//重定向到登录页}连接数据库及登录验证如何连接到数据库,并从用户数据表中检索到用户信息呢?这要用到JAVA的JDBC技术。连接数据库//连接服务器和数据库gamedbString

dbURL

=

"jdbc:sqlserver://localhost:1433;DatabaseName=gamedb";String

userName="sa"; //默认用户名

String

userPwd="123456";//

Connection

dbConn=null;try{Class.forName("com.

.sqlserver.jdbc.SQLServerDriver");dbConn

=DriverManager.getConnection(dbURL,userName,userPwd);}catch

(Exception

e){e.printStackTrace();}验证用户信息Statement

stmt=conn.createStatement();String

sql="select

userid,password

from

userinf

where

userid=’”+login_id+”’";ResultSet

rs

=

stmt.executeQuery(sql);If(rs.next()){String

user_id=rs.

Getstring(1);String

user_pwd

=

rs.

Getstring(2);if

(login_id.

Equals(user_id)

&&

login_pwd.

Equals(user_pwd)){//验证通过…

…}elseresponse.sendRedirect("login.jsp?msg=

错误");}elseresponse.sendRedirect("login.jsp?msg=用户不存在");实践:实现登录及控制login.jspdologin.jsp提交Form表单gamehome.jsp验证通过,重定向验证错误返回JSP内置对象对象类型描述作用域requestjavax.servlet.ServletRequest用户端传来的请求,封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息,包括来自GET/POST请求的参数Request用户请求期responsejavax.servlet.ServletResponse传回用户端的响应,对客户的请求做出动态的响应,向客户端发送数据、重定向网页等Page页面执行期pageContextjavax.servlet.jsp.PageContext通过上下文,管理网页的属性Page页面执行期pagejava.lang.Object指向JSP网页本身,相当于thisPage页面执行期sessionjavax.servlet.http.HttpSession会话,完成会话期管理,用于会话的多次请求间保持状态。不同的用户,拥有各自的会话session,用户只能 到自已的session对象。Session会话期applicationjavax.servlet.ServletContext用于保持应用程序的全局状态,服务器启动后就产生了这个application对象,,直到服务器关闭在 的各个页面之间浏览时,对于所有的客户,这个application对象都是同一个。application整个Web应用程序运行期outjavax.servlet.jsp.JspWriter传回客户端的输出流,用来传送回应的输出Page页面执行期configjavax.servlet.ServletConfigServlet配置管理,封装了servlet的结构信息Page页面执行期exceptionjava.lang.ThrowableJSP网页错误时,抛出的例外,可以从中取得错信息。Page页面执行期对象的作用域对象的

周期和可

性称为作用域(scope)。JSP有4种类型的作用域:页面域请求域回话域应用域内置request对象objectgetAttribute(Stringname),返回指定属性的属性值。int

getContentLength(),返回请求体的长度(以字节数)。ServletInputStream

getInputStream(),得到请求体中一行的二进制流。StringgetParameter(String

name),返回name指定参数的参数值。String[]getParameterValues(Stringname),返回包含参数name的所有值的数组。String

getRemoteAddr(),返回发送此请求的客户端IP地址。String

getRemoteHost(),返回发送此请求的客户端主机名。String

getRealPath(String

path),返回一虚拟路径的真实路径。内置response对象void

addHeader(String

name,

String

value),添加网页头的名字/值对),添加客户端的void

add

(ServletOutputStream

getOutputStream(),返回响应的一个二进制输出流PrintWriter

getWriter(),返回可以向客户端输出字符的一个对象void

setContentLength(int

len),设置响应头长度void

setContentType(String

type),设置响应的MIME类型sendRedirect(java.lang.String

location),重新定向客户端的请求内置session对象void

setAttribute(String

name,object

value),设置属性项object

getAttribute(String

name),返回属性项public

String

getId(),返回SESSION创建时JSP引擎为它设的惟一ID号voidinvalidate(),取消SESSION,使SESSION不可用void

removeValue(String

name),删除SESSION中指定的属性内置application对象Object

getAttribute(String

name)

返回给定名的属性值void

setAttribute(String

name,Object

obj)设定属性的属性值void

removeAttribute(String

name)

删除一属性及其属性值内置out对象out内置对象是对输出流的,一般在程序中使用。程序用out对象把数据写入响应并发送回客户端。out对象是JspWriter类的实例,是向客户端输出内容常用的对象。out.print(String

s),输出内容到流void

clear(),清除缓冲区的内容void

flush(),把缓冲区内容送出,直到清空booleanisAutoFlush(),返回缓冲区满时,是自动清空还是抛出异常void

close(),关闭输出流内置config对象String

getInitParameter(String

name)

返回初始化参数的值例4-9config.jsp<%@

page

language="java"

contentType="text/html;

charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE

HTML

PUBLIC

"-//W3C//DTD

HTML

4.01

Transitional//EN"><html><head><meta

http-equiv="Content-Type"

content="text/html;

charset=utf-8"><title>meg.jsp</title></head><body><table

align="center"

border="0"

cellPadding="0"

cellSpacing="0"width="730"><tr><td><divalign="center"><br>客户服务信箱:<%=config.getInitParameter("

")%>客户服务

:<%=config.getInitParameter("phone")%><br>客户服务

:<%=config.getInitParameter("

")%><br></div></td></tr></table></body></html>例4-9在web.xml的</we

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论