注册免费注册论坛

免费注册论坛  时间:2021-02-23  阅读:()

版权所有IBM公司2006商标在ApacheGeronimo中创建登录和注册系统,第2部分:用JSP构建注册系统第1页,共12在ApacheGeronimo中创建登录和注册系统,第2部分:用JSP构建注册系统扩展数据库登录系统TylerAnderson(tyleranderson5@yahoo.
com)自由作者2006年3月02日这个由两部分构成的文章系列演示了,如何使用声明式Java2平台企业版(J2EE)安全性和ApacheGeronimo内置的Derby数据库对注册用户进行认证并允许他们访问使用Geronimo应用服务器的Web站点.
安全性用SQL类型的部署计划进行控制,该部署计划指定允许哪些用户或组访问Web站点.
本文是该系列的第2部分,重点是使用Java服务器页面(JSP)来注册新用户,然后新用户就可以用第1部分介绍的基础设施设置进行登录.
查看本系列更多内容简介在第1部分中,虚构的WebApps公司为客户创建了一个Web站点,允许不同级别的用户认证.
基础设施的开发是通过为应用程序创建数据库表和安全部署计划而进行的.
在Geronimo内置的Derby数据库中,通过Geronimo控制台创建了用户表和分组表.
然后通过连接到Geronimo内置Derby数据库的SQLLoginModule,实现安全性;并把用户名、口令和组与用户登录时提供的信息进行匹配,从而允许表中的用户访问论坛.
在这篇文章中,第1部分中创建的简单的登录系统得到扩展,添加了使用JSP的用户注册系统.
这允许客户Web站点的新访问者能够注册并访问论坛.
首先,将学习JSP以及它们的实现方式和与Geronimo的关系.
然后将创建一个Javaservlet,用于显示允许用户通过提供用户名、口令和电子邮件地址进行注册的表单.
然后这些信息被提交到同一个servlet,它连接数据库并插入新记录,新记录中包含新用户的信息,从而允许用户登录.
设置请参阅本系列第1部分中的开始一节为这一部分做准备.
而且,请参阅下载一节中压缩的源文件中的README.
txt文件,得到修改的目录结构.
除了第1部分列出的前提条件和Java2SDK标准版(J2SDK),还需要J2EE1.
4和JSP2.
0.
JSP2.
0与J2EE1.
4一起打包,可以在Sun微系统的Web站点上免费下载.
developerWorksibm.
com/developerWorks/cn/在ApacheGeronimo中创建登录和注册系统,第2部分:用JSP构建注册系统第2页,共12现在可以开始了.
先从介绍JSP开始.
Java服务器页面JSP是脚本语言的一种Java技术形式.
可以把Java语言嵌在Web页面内部或创建Java类充当servlet.
就像其他脚本语言一样,JSP允许根据提交给Web页面的内容生成动态内容.
但是,JSP和servlet是用Java语言编写的,所以拥有使用Java语言的跨平台、跨设备移植性的威力.
要完整地理解Geronimo的威力,重要的是在为Geronimo构建应用程序时,既要理解JSP还要理解servlet.
现在将通过用JSP编写第一个脚本,学习如何编写简单的.
jsp文件.
在本文稍后,将学习如何编写servlet.
servlet与用JSP编写的脚本类似;但是,因为它是预编译的,所以更安全.
用JSP编写脚本第一个JSP脚本将显示日期,而且完全是用Java语言编写的.
请创建jspscript.
jsp文件,并像清单1所示那样定义它.
清单1.
用JSP编写脚本");out.
println("ThisismyfirstscriptwritteninJSP!
");out.
println("Thehistorictimeofthiseventis:");out.
println(String.
valueOf(d)+"");%>TextdisplayedoutsideoftheJSPscript.
");%>现在为部署创建一个简单的web.
xml文件,并把它放在WEB-INF子目录.
像清单2所示的那样定义它.
清单2.
简单的web.
xml文件web.
xml文件无论多简单,在Geronimo上部署.
war文件时都需要它,因为每个Web模块(.
war文件)都要求一个部署描述符(web.
xml文件).
现在,请输入以下命令创建.
war文件:jar-cvfjsp.
warjsp.
warWEB-INF/web.
xml请输入以下命令在Geronimo上部署.
war文件:java-jar/bin--usersystem--passwordmanageribm.
com/developerWorks/cn/developerWorks在ApacheGeronimo中创建登录和注册系统,第2部分:用JSP构建注册系统第3页,共12deployjsp.
war现在把浏览器指向http://localhost:8080/jsp/jspscript.
jsp.
请看图1的示例浏览器输出.
图1.
查看脚本输出现在重新来看清单1.
注意,在运行有Geronimo的控制台中显示了Thescripthasstarted.
浏览器上显示的文本是用out.
println()语句写入的或者是通过把文本放在标记内.
还请注意,日期的检索方式与在其他Java应用程序中的方式一样!
这是JSP威力的一个示例,它可以让您更全面地利用Geronimo的力量.
稍后,将使用一个.
jsp脚本以允许用户退出系统.
现在来看下载一节中的示例.
zip文件中的logout.
jsp脚本.
使用JSP,让用户退出论坛的功能被添加到客户的应用程序中(与关闭浏览器退出相对).
下面编写Javaservlet.
创建Javaservlet您的Javaservlet促进检索并显示用户信息.
请创建文件RegisterServlet.
java,并把它放在以下目录:.
/src/servlets/RegisterServlet.
java.
如清单3所示的那样定义它.
清单3.
Javaservletpackageservlets;importjava.
io.
*;importjava.
util.
*;importjava.
sql.
*;importjavax.
servlet.
*;importjavax.
servlet.
http.
*;publicclassRegisterServletextendsHttpServlet{publicstaticfinalStringform="\n"+"Name:\n"+"\n"+"Email:\n"+developerWorksibm.
com/developerWorks/cn/在ApacheGeronimo中创建登录和注册系统,第2部分:用JSP构建注册系统第4页,共12"\n"+"Password:\n"+"\n"+"\n";publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.
setContentType("text/html");response.
setBufferSize(8192);PrintWriterout=response.
getWriter();out.
println(""+"Register"+""+"Register\n"+form+"");out.
close();}publicStringgetServletInfo(){return"Register!
";}}注意,第一个粗体行设置servlet的包,即servlets.
这个包必须与servlet所在的目录名称相符.
所以,把servlet保存在.
/src/servlets/中.
现在,之所以servlet成其为servlet的,是因为它扩展了HttpServlet类而且有一个doGet()方法,用于对servlet的GET请求作出响应.
注意,响应的内容类型在doGet()方法的第一行被设置为text/html.
响应的缓冲区尺寸也进行了设置,输出流也从out变量的响应中得到.
最后,显示表单.
注意,实际的表单保存在类声明之后的Stringform变量中.
方法是POST,默认的动作把表单数据提交回这个servlet.
然后表单有三个文本框,供用户提交他们的信息:用户名、口令和电子邮件地址.
这样,新用户可以输入他们的信息,并提交到服务器.
接下来,创建doPost()方法,检索提交的响应,并把用户信息保存在Derby数据库中.
把新用户数据保存到Derby中现在已经设置好servlet以显示表单.
但是,现在需要在servlet中实现doPost()方法,用于检索提交的数据.
这就可以检索提交的变量值,并把它们作为新记录输入到数据库中.

检索提交的数据并保存到Derby中如果用户提交了信息,在servlet当前的情况下,浏览器会显示HTTPERROR:405信息,因为servlet目前并没有支持POST方法.
可以通过在servlet中实现doPost()方法解决这个问题.
请继续定义RegisterServlet.
java文件,如清单4所示.
清单4.
继续Javaservlet.
.
.
"");out.
close();}ibm.
com/developerWorks/cn/developerWorks在ApacheGeronimo中创建登录和注册系统,第2部分:用JSP构建注册系统第5页,共12publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.
setContentType("text/html");response.
setBufferSize(8192);PrintWriterout=response.
getWriter();out.
println(""+"Register"+""+"Register\n");Stringusername=request.
getParameter("username");Stringpassword=request.
getParameter("password");Stringemail=request.
getParameter("email");booleanresult=false;if((username!
=null)&&(username.
length()>0)){.
.
.
注意,响应的设置就像在doGet()方法中设置一样.
接下来,向浏览器输出HTML响应的开始.
然后把POSTrequest变量提交的三个变量检索到String变量类型中.
然后,检查并确保输入的用户名不为null.
现在就有了需要插入数据库的数据.
继续定义doPost()方法,如清单5所示.
清单5.
继续doPost()方法.
.
.
booleanresult=false;if((username!
=null)&&(username.
length()>0)){Driverdriver=null;try{driver=(Driver)(com.
ibm.
db2.
jcc.
DB2Driver.
class).
newInstance();}catch(Exceptione){thrownewIllegalArgumentException("Unabletoload,"+"instantiate,orregisterdriver"+driver+":"+e.
getMessage());}try{Propertiesprop=newProperties();prop.
put("user","system");prop.
put("password","manager");Connectionconn=driver.
connect("jdbc:derby:net://localhost:1527/SystemDatabase;",prop);Stringsql="insertintoapp.
usersvaluesPreparedStatementstatement=conn.
prepareStatement(sql);statement.
setString(1,username);statement.
setString(2,email);statement.
setString(3,password);statement.
execute();sql="insertintoapp.
groups_usersvalues"+"(,'registeredUsers')";statement=conn.
prepareStatement(sql);statement.
setString(1,username);statement.
execute();result=true;.
.
.
developerWorksibm.
com/developerWorks/cn/在ApacheGeronimo中创建登录和注册系统,第2部分:用JSP构建注册系统第6页,共12注意,如果每件事都按计划进行,那么在每件事都成功提交到数据库,而且没有抛出异常之后,result变量应当等于true.
要使用的驱动程序是com.
ibm.
db2.
jcc.
DB2Driver.
这与本系列的第一部分中创建的my-db-plan.
xml文件中使用的驱动程序相同.
但是,由于在将它部署到Geronimo上之前需要编译这个代码,所以请确保在第1部分中下载的db2jcc.
jar和db2jcc_license_c.
jar文件在CLASSPATH中.
第二个try语句先设置连接Geronimo内置的Derby数据库——SystemDatabase时需要的Properties数据结构.
连接URL、用户名和口令也都与在第1部分的my-db-plan.
xml文件中输入的相同.
然后,设置并执行两个SQL语句,把包含新用户数据的新记录插入users表,把新记录插入groups_users表,添加新用户到registeredUsers组.
记得第1部分中,把允许访问用户区的registered-users角色映射到了geronimo-web.
xml文件中的registeredUsers组.
现在要处理SQL语句有问题时的异常,然后显示成功注册的确认信息,并关闭POST响应(请参阅清单6).
清单6.
完成doPost()方法.
.
.
statement.
execute();result=true;}catch(Throwablee){result=false;e.
printStackTrace();System.
out.
println(e.
getMessage());System.
out.
println("Errorexecutingquery");out.
println("ErrorinSQL!
");}}if(result)out.
println("Thankyouforregistering!
"+"Userslogin"+"here.
\n"+"Administratorslogin"+"here.
\n"+"Backtothe"+"mainpage.
\n");elseout.
println("Invalid,tryagain!
"+form);out.
println("");out.
close();}如果在第二个try语句运行期间抛出异常,那么请注意,result变量被设置为false.
这向浏览器发送一个响应,表明用户注册有问题或者servlet需要调试.
否则,servlet感谢用户注册,并显示登录链接.
最后,doPost()方法结束,用out.
close()语句关闭响应.
这就完成了接受新用户注册并把用户数据插入Geronimo内置Derby数据库的servlet.
注册servlet最后一步是注册servlet,以便Geronimo知道它的存在以及在哪个页面位置上安放它.
请编辑第1部分的web.
xml,如清单7所示.
ibm.
com/developerWorks/cn/developerWorks在ApacheGeronimo中创建登录和注册系统,第2部分:用JSP构建注册系统第7页,共12清单7.
注册servlet.
.
.
version="2.
4">RegisterServletRegisterServletservlets.
RegisterServletRegisterServlet/login/register.
html.
.
.
这个文件中新加入的东西以黑体显示.
还记得servlet在servlets类中,所以它的类名是servlets.
RegisterServlet,在标记中指定.
然后需要把它映射到服务器上的位置,目录从geronimo-web.
xml文件中的标记所指定的应用程序的根目录开始.
有了以上配置,servlet会显示在:http://localhost:8080/sqlSecurityDemo/login/register.
html现在转移到有趣的部分:在Geronimo上测试这个应用程序!
测试应用程序在应用程序投入使用之前,对应用程序进行全面测试总是重要的.
现在构建应用程序、重新部署在Geronimo上,并通过注册新用户、登录到用户区对servlet进行测试.
构建和重新部署现在需要构建应用程序并创建应用程序的.
war文件.
要用Ant构建.
war文件,请输入:ant.
现在创建了最终的security.
war文件,可以重新部署在Geronimo上了.
根据第1部分,应当已经在Geronimo上部署了应用程序的安全性部署计划(my-db-plan.
xml)和应用程序(security.
war).
所以这次只需要重新部署更改过的security.
war文件.
请输入以下命令执行这个工作:java-jarbin/deployer.
jar--usersystem--passwordmanagerredeploysecurity.
warcom/ibm/geronimo/security/myDbApp这会停止、卸载并反安装当前已经部署的模块(在第1部分中部署的),然后输出以下内容,开始新的模块:清单8.
重新部署最终的应用程序Stoppedcom/ibm/geronimo/security/myDbAppUnloadedcom/ibm/geronimo/security/myDbAppUninstalledcom/ibm/geronimo/security/myDbAppDeployedcom/ibm/geronimo/security/myDbAppStartedcom/ibm/geronimo/security/myDbAppRedeployedcom/ibm/geronimo/security/myDbAppdeveloperWorksibm.
com/developerWorks/cn/在ApacheGeronimo中创建登录和注册系统,第2部分:用JSP构建注册系统第8页,共12最终的应用程序现在安装在Geronimo上.
接下来测试它的能力.
测试最终应用程序现在需要注册一个新用户以测试servlet.
请单击newusersregisterhere链接,并注册一个新用户,输入newuser作为用户名,newpass作为口令,如图2所示.
图2.
注册新用户单击Submit.
在数据库中和registeredUsers组中现在应当有了新用户.
请单击Usersloginhere登录用户区,对此进行确认.
现在用刚刚输入的用户名和口令登录,如图3所示.

SugarHosts糖果主机商更换域名

昨天,遇到一个网友客户告知他的网站无法访问需要帮他检查到底是什么问题。这个同学的网站是我帮他搭建的,于是我先PING看到他的网站是不通的,开始以为是服务器是不是出现故障导致无法打开的。检查到他的服务器是有放在SugarHosts糖果主机商中,于是我登录他的糖果主机后台看到服务器是正常运行的。但是,我看到面板中的IP地址居然是和他网站解析的IP地址不同。看来官方是有更换域名。于是我就问 客服到底是什...

HoRain Cloud:国内特价物理机服务器,镇江机房,内地5线BGP接入,月付499元起

horain怎么样?horain cloud是一家2019年成立的国人主机商家,隶属于北京辰帆科技有限公司,horain持有增值电信业务经营许可证(B1-20203595),与中国电信天翼云、腾讯云、华为云、UCloud、AWS等签署渠道合作协议,主要提企业和个人提供云服务器,目前商家推出了几款特价物理机,都是在内地,性价比不错,其中有目前性能比较强悍的AMD+NVMe系列。点击进入:horain...

哪个好Vultr搬瓦工和Vultr97%,搬瓦工和Vultr全方位比较!

搬瓦工和Vultr哪个好?搬瓦工和Vultr都是非常火爆的国外VPS,可以说是国内网友买的最多的两家,那么搬瓦工和Vultr哪个好?如果要选择VPS,首先我们要考虑成本、服务器质量以及产品的售后服务。老玩家都知道目前在国内最受欢迎的国外VPS服务商vultr和搬瓦工口碑都很不错。搬瓦工和Vultr哪个稳定?搬瓦工和Vultr哪个速度快?为了回答这些问题,本文从线路、速度、功能、售后等多方面对比这两...

免费注册论坛为你推荐
百度k站被百度k站之后你一般是怎么处理的ghostxp3GhostXP3电脑公司特别版V499怎么安装硬盘人500G的硬盘容量是多少啊?宕机宕机是什么意思系统分析员系统分析员的工作内容宽带接入服务器宽带接入服务器的五大功能是什么?微信电话本怎么用微信电话本短信管理功能怎么用?网站营运网站运营都分为哪些方面网站排名靠前网站排名靠前是否就意味着运营成功?阐述原因网站排名靠前如何优化网站 如何让网站排名靠前
香港主机租用 合租服务器 新网域名解析 泛域名绑定 主机优惠码 naning9韩国官网 singlehop Vultr 域名优惠码 英语简历模板word 服务器cpu性能排行 线路工具 怎样建立邮箱 789电视 135邮箱 isp服务商 vip购优惠 外贸空间 php服务器 lamp的音标 更多