通过标记处理程序开发标记时,需要创建一个标记处理文件,然后在该文件中定义标记的处理方法,自定义标记的名称及属性会自动添加到标记库描述符文件中。
1、创建一个web应用程序
Login_MyTag,并将JSP_JavaBean_Login项目中的四个jsp文件以及image项目复制到该项目中
2、新建一个标记库描述符文件:Login
3、新建一个标记处理程序,注:标记处理程序是服务器端的java组件,用于创建jsp文件的定制标记
下一步
完成--》自动生成了一些代码,对于doTag方法,要修改为下面:
public void doTag() throws JspException {
JspWriter out = getJspContext().getOut();
login.LoginBean login = new login.LoginBean();
login.setUsername(username);
login.setPassword(password);
boolean success = login.checklogin();
if(success){
getJspContext().setAttribute("success",true);
} else {
getJspContext().setAttribute("success", "false");
JspWriter out = getJspContext().getOut();
login.LoginBean login = new login.LoginBean();
login.setUsername(username);
login.setPassword(password);
boolean success = login.checklogin();
if(success){
getJspContext().setAttribute("success",true);
} else {
getJspContext().setAttribute("success", "false");
}
4、修改
标记库描述符文件
删掉注释就行了
5、修改
logincheck.jsp文件,通过自定义的标记进行登录,登录的结果通过${pageScope.success}变量值进行判断
<
%@page contentType="text/html" pageEncoding="UTF-8" %>
< %@taglib prefix = "login" uri="WEB-INF/tlds/Login.tld" %>
< %@taglib prefix = "c" uri=" http://java.sun.com/jsp/jstl/core" %>
<c:set var="password" value="${param.password}" />
<c:set var="username" value="${param.username}"/>
<login:LoginTagHandler username="${username}" password ="${password}"/>
<c:set var="loginsuccess" value="${pageScorp.success}"/>
<c:choose>
<c:when test="${loginsuccess=='true'}">
<c:set value="${username}" var="username" scope="session"/>
<c:redirect url="welcome.jsp"/>
</c:when>
<c:otherwise>
<c:redirect url="error.jsp"/>
</c:otherwise>
</c:choose>
< %@taglib prefix = "login" uri="WEB-INF/tlds/Login.tld" %>
< %@taglib prefix = "c" uri=" http://java.sun.com/jsp/jstl/core" %>
<c:set var="password" value="${param.password}" />
<c:set var="username" value="${param.username}"/>
<login:LoginTagHandler username="${username}" password ="${password}"/>
<c:set var="loginsuccess" value="${pageScorp.success}"/>
<c:choose>
<c:when test="${loginsuccess=='true'}">
<c:set value="${username}" var="username" scope="session"/>
<c:redirect url="welcome.jsp"/>
</c:when>
<c:otherwise>
<c:redirect url="error.jsp"/>
</c:otherwise>
</c:choose>