1. Benutzerdefinierter Abfangjäger
1. Architektur

3. Interceptor-API
4. Interceptor-Konfiguration
1 2 3 | <package name= "inter" namespace = "/" extends = "struts-default" ><interceptors><!-- 1.注册拦截器 --><interceptor name= "myInter3" class = "cn.itcast.a_interceptor.MyInterceptor3" ></interceptor><!-- 2.注册拦截器栈 --><interceptor-stack name= "myStack" ><!-- 自定义拦截器引入(建议放在20个拦截器之前) --><interceptor-ref name= "myInter3" ><!-- 指定哪些方法不拦截
<param name= "excludeMethods" >add, delete </param> --> <!-- 指定哪些方法需要拦截 --> <param name= "includeMethods" >add, delete </param></interceptor-ref><!-- 引用默认的拦截器栈(20个) --><interceptor-ref name= "defaultStack" ></interceptor-ref></interceptor-stack> </interceptors><!-- 3.指定包中的默认拦截器栈 -->< default -interceptor-ref name= "myStack" ></ default -interceptor-ref><action name= "Demo1Action_*" class = "cn.itcast.a_interceptor.Demo1Action" method= "{1}" ><!-- 为Action单独指定走哪个拦截器(栈)
<interceptor-ref name= "myStack" ></interceptor-ref>--><result name= "success" type= "dispatcher" >/index.jsp</result></action></package>
|
Nach dem Login kopieren
2. struts2-Tag
1. Tag-System
1 | <!-- 补充知识:定义全局结果集 -->< global -results><result name= "toLogin" type= "redirect" >/login.jsp</result></ global -results>
|
Nach dem Login kopieren
2. Struts2-Tag-Struktur
3. Kontroll-Tags
Aktion vorbereiten und gehen Sie dann zu JSP, um Struts2-Tags zu üben 
Beginnen Sie mit dem Üben von Kontroll-Tags:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Demo2Action extends ActionSupport { public String execute() throws Exception {
List<String> list = new ArrayList<>();
list.add( "tom" );
list.add( "jerry" );
list.add( "jack" );
list.add( "rose" );
list.add( "hqy" );
ActionContext.getContext().put( "list" , list); return SUCCESS;
}
}
|
Nach dem Login kopieren
4. Daten-Tags
1 | <%@ taglib prefix= "s" uri= "/struts-tags" %><!-- 遍历标签 iterator --><!-- ------------------------------------- --><s:iterator value= "#list" ><s:property /><br></s:iterator><!-- ------------------------------------- --><hr><s:iterator value= "#list" var = "name" ><s:property value= "#name" /><br></s:iterator><!-- ------------------------------------- --><hr><s:iterator begin= "1" end = "100" step= "1" ><s:property />|</s:iterator><!-- ------------------ if else elseif ------------------- --><hr><s: if test= "#list.size()==4" >list长度为4!</s: if ><s: elseif test= "#list.size()==3" >list长度为3!</s: elseif ><s: else >list不3不4!</s: else >
|
Nach dem Login kopieren
5. Formular-Tags
1 | <!-- ------------------property 配合ognl表达式页面取值 ------------------- --><hr><s:property value= "#list.size()" /><s:property value= "#session.user.name" />
|
Nach dem Login kopieren
6. Non-Form-Tags
Fehlermeldung in Aktion hinzufügen
1 2 3 | <!-- struts2表单标签 --><!-- 好处1: 内置了一套样式. --><!-- 好处2: 自动回显,根据栈中的属性 --><!-- theme:指定表单的主题
xhtml:默认
simple:没有主题 --><s:form action= "Demo3Action" namespace = "/" theme= "xhtml" ><s:textfield name= "name" label= "用户名" ></s:textfield><s:password name= "password" label= "密码" ></s:password><s:radio list= "{'男','女'}" name= "gender" label= "性别" ></s:radio><s:radio list= "#{1:'男',0:'女'}" name= "gender" label= "性别" ></s:radio><s:checkboxlist list= "#{2:'抽烟',1:'喝酒',0:'烫头'}" name= "habits" label= "爱好" ></s:checkboxlist><s:select list= "#{2:'大专',1:'本科',0:'硕士'}" headerKey= "" headerValue= "---请选择---" name= "edu" label= "学历" ></s:select><s:file name= "photo" label= "近照" ></s:file><s:textarea name= "desc" label= "个人简介" ></s:textarea><s:submit value= "提交" ></s:submit></s:form>
|
Nach dem Login kopieren
Fehlermeldung entfernen
1 | this.addActionError( "我是错误信息 哈哈哈" );
|
Nach dem Login kopieren
3. Übung: Anmeldefunktion
Kerncode:
Aktionscode:
Service-Layer-Code:
1 2 3 4 5 6 | public class UserAction extends ActionSupport implements ModelDriven<User> { private User user = new User(); private UserService us = new UserServiceImpl(); public String login() throws Exception {
}
@Overridepublic User getModel() { return user;
}
}
|
Nach dem Login kopieren
Dao-Layer-Code:
1 2 3 4 5 6 | public class UserServiceImpl implements UserService { private UserDao ud = new UserDaoImpl();
@Overridepublic User login(User user) {
}
}
}
}
|
Nach dem Login kopieren
IV. Übung: Login-Interceptor überprüfen
Kerncode:
1 2 3 4 | public class UserDaoImpl implements UserDao {
@Overridepublic User getByUserCode(String user_code) {
}
}
|
Nach dem Login kopieren
Struts.xml-Konfigurationsdateicode:
Zusätzliches Wissen: Überprüfen Sie, ob der Die übergeordnete Seite der aktuellen Seite ist Ihre eigene. Wenn nicht, lösen Sie das Verschachtelungsproblem der Seite.
1 2 3 4 5 6 | <?xml version= "1.0" encoding= "UTF-8" ?><!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd" ><struts><!-- 指定struts2是否以开发模式运行
1.热加载主配置.(不需要重启即可生效)
2.提供更多错误信息输出,方便开发时的调试 --><constant name= "struts.devMode" value= "true" ></constant><package name= "crm" namespace = "/" extends = "struts-default" ><interceptors><!-- 注册拦截器 --><interceptor name= "loginInterceptor" class = "cn.itheima.web.interceptor.LoginInterceptor" ></interceptor><!-- 注册拦截器栈 --><interceptor-stack name= "myStack" ><interceptor-ref name= "loginInterceptor" ><param name= "excludeMethods" >login</param></interceptor-ref><interceptor-ref name= "defaultStack" ></interceptor-ref></interceptor-stack></interceptors><!-- 指定包中的默认拦截器栈 -->< default -interceptor-ref name= "myStack" ></ default -interceptor-ref><!-- 定义全局结果集 -->< global -results><result name= "toLogin" type= "redirect" >/login.jsp</result></ global -results>< global -exception-mappings><!-- 如果出现java.lang.RuntimeException异常,就将跳转到名为error的结果 --><exception-mapping result= "error" exception= "java.lang.RuntimeException" ></exception-mapping></ global -exception-mappings>
<action name= "CustomerAction_*" class = "cn.itheima.web.action.CustomerAction" method= "{1}" ><result name= "list" >/jsp/customer/list.jsp</result><result name= "toList" type= "redirectAction" > <param name= "actionName" >CustomerAction_list</param> <param name= "namespace" >/</param> </result></action><action name= "UserAction_*" class = "cn.itheima.web.action.UserAction" method= "{1}" ><result name= "toHome" type= "redirect" >/index.htm</result><result name= "error" >/login.jsp</result></action></package></struts>
|
Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonJAVAEE – Implementierung von benutzerdefinierten Interceptoren, Struts2-Tags, Anmeldefunktionen und Verifizierungs-Login-Interceptoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!