注册免费注册论坛

免费注册论坛  时间: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所示.

hostkvm:美国VPS,三网强制CU-VIP线路,$5/月,1G内存/1核/15gSSD/500g流量

hostkvm在2021年3月新上线洛杉矶新VPS业务,强制三网接入中国联通优化线路,是当前中美之间性价比最高、最火热的线路之一,性价比高、速度非常好,接近联通AS9929和电信AS4809的效果,带宽充裕,晚高峰也不爆炸。 官方网站:https://hostkvm.com 全场优惠码:2021(全场通用八折,终身码,长期) 美国 US-Plan0【三网联通优化线路】 内存:1G CPU:...

DMIT(季度$28.88)调整洛杉矶CN2 GIA优化端口

对于DMIT商家已经关注有一些时候,看到不少的隔壁朋友们都有分享到,但是这篇还是我第一次分享这个服务商。根据看介绍,DMIT是一家成立于2017年的美国商家,据说是由几位留美学生创立的,数据中心位于香港、伯力G-Core和洛杉矶,主打香港CN2直连云服务器、美国CN2直连云服务器产品。最近看到DMIT商家有对洛杉矶CN2 GIA VPS端口进行了升级,不过价格没有变化,依然是季付28.88美元起。...

HostKvm香港VPS七折:$5.95/月KVM-2GB内存/40GB硬盘/500GB月流量

HostKvm是一家成立于2013年的国外主机服务商,主要提供VPS主机,基于KVM架构,可选数据中心包括日本、新加坡、韩国、美国、俄罗斯、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。商家本月针对香港国际机房提供特别7折优惠码,其他机房全场8折,优惠后2G内存香港VPS每月5.95美元起,支持使用PayPal或者支付宝付款。下面以香港国际(HKGlobal)为...

免费注册论坛为你推荐
赵雨润情人节“我们约会吧”电影DVD_我们约会吧高清DVD下载_qvod快播??windows优化大师怎么用Windows优化大师怎么用spgnuxps = getCon().prepareStatement(sql);啥意思,求注释,要是不嫌麻烦帮我把下面的也给注释了显卡温度多少正常显卡温度多少算正常9flash怎么使用ePSXe啊?神雕侠侣礼包大全神雕侠侣先手礼包在哪领神雕侠侣礼包大全神雕侠侣陈晓礼包兑换码怎么获得ios系统iOS系统为什么那么好二层交换机集线器和二层交换机,三层交换机的区别服务器连接异常服务器连接异常是怎么回事啊,怎么解决
长沙域名注册 中文域名交易中心 香港bgp机房 老鹰主机 mediafire 免费博客空间 100x100头像 中国电信测速112 刀片服务器是什么 泉州移动 服务器是干什么的 服务器合租 gtt 超级服务器 优酷黄金会员账号共享 七夕快乐英语 512mb 台湾google 工信部网站备案查询 百度云空间 更多