一、工程的基本功能
在login1.jsp输入完用户名与密码,点击登陆按钮便对数据库进行查表操作。
如果密码输入错误,则返回:
如果密码输入正确,则对supername这个字段进行判断,如果是1或者2便跳到registerusrwelcome页面进行进一步的判断看是高权用户还是普通用户。如果是3则跳到管理员页面。
在管理员页面中,存在着一个用户列表的超级链接,点击则对数据库进行查表,把数据库acesys中的整个usr表罗列出来。
二、算法思路
Login1.jsp把文本框的值扔到相应的usrLoginAction.action进行处理(实质上就是一个Java类),如果在struts.xml中判断其返回值,如果是success3则把页面跳转到adminwelcome.jsp,其余的值会有相应的处理。而在adminwelcome.jsp也存在着一个跳转到相应action(实质上也是一个Java类、Java处理文件)进行处理,由于没有到最终处理完毕仅有一种成功的情况(除非程序猿自己写错代码了),因此,无论如何都返回一个的值给struts.xml意思意思,然后自然而然地扔到showAllusr.jsp。至于为什么不直接拉到showAllusr.jsp进行?是因为把数据库操作代码扔到前台实在是太危险鸟!
整个工程的具体文件目录如下所示,已经用不同的颜色标注不同的程序处理线路:
当然,这上面有些页面是无关这个工程的……
三、制作步骤
1.首先在Mysql中配置好一张用户基本信息表usr,如下:
在里面输入好相应的用户信息。表示预先存在着几个用户。当然,注册页面与下面的制作过程同理,只是其中的SQL语句不同罢了。
然后按照之前的方法,用一个已经配置好struts2的WEB-INT替换原工程的WEB-INT。直接配置好struts2,省去编辑的麻烦。
2.写好Login1.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'login1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <s:property value="error" /> <!-- <form action="usrLoginAction.action" method="post"> 用户名: <input type="text" name="username" /> <br /> 密码: <input type="password" name="password" /> <br /> <input type="submit" value="登陆" /> </form> --> <!-- 使用struts2的标签实现表单 --> <s:form action="usrLoginAction" method="post"> <s:textfield name="username" label="用户名"></s:textfield> <s:password name="password" label="密码"></s:password> <s:submit value="登陆"> </s:submit> </s:form> </body> </html>
这次编写不使用古老的HTML代码。直接使用Struts2标签(也就是Struts2自身的标准去编写)。
首先要在jsp头加入一段使用Struts2标签的声明<%@ taglib uri="/struts-tags" prefix="s"%>
而之后的的编写如上面的代码所示。之前用HTML代码的那一段已经被注释掉,和与Struts2进行对比。
其中<s:property value="error" />的意思是输出Action里面的那个的error变量的值。
同时注意,这里是value而不是values。这是一个名词,表示值等于多少。而不是一个动词,说其值为多少。