马士兵struts2学习笔记(详细版)

简介: 15、23_尚学堂马士兵_Struts2_模块包含

15、23_尚学堂马士兵_Struts2_模块包含  

<struts>  

   <constant name="struts.devMode" value="true" />  

   <include file="login.xml" />  

</struts>  

可以将别的写好的配置文件直接包含到struts得配置文件中,方便多人开发避免不必要的配置文件冲突.  

login.xml  

<?xml version="1.0" encoding="UTF-8" ?>  

<!DOCTYPE struts PUBLIC  

   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  

   "http://struts.apache.org/dtds/struts-2.0.dtd">  

 

<struts>  

   <package name="login" extends="struts-default" namespace="/login">  

       <action name="login*" class="com.bjsxt.struts2.user.action.LoginAction{1}">  

           <result>/user_login_success.jsp</result>  

       </action>  

   </package>  

</struts>  

 

16、24_尚学堂马士兵_Struts2_默认Action  

<package name="default" namespace="/" extends="struts-default">  

        <!-- 当配置文件中没有用户要访问的Aciton的时候,会调用<default-action-ref 所定义的Action --处理错误页面 -->  

       <default-action-ref name="index"></default-action-ref>  

       <action name="index">  

           <result>/default.jsp</result>  

       </action>  

   </package>  

 

17、27_尚学堂马士兵_Struts2_结果类型_result_type_1  

   ResultType的最常用的几种配置:(四种配置分别代表了四种不同的跳转方式)  

    <package name="resultTypes" namespace="/r" extends="struts-default">  

       <action name="r1">  

                 <!--type不写默认的为dispatcher:用服务器跳转跳转到结果页面--只能跳转到页面,不能跳转到Action -->  

           <result type="dispatcher">/r1.jsp</result>  

       </action>  

       

       <action name="r2">  

                 <!--客户端跳转的方式跳转到结果页面  只能跳转到页面,不能跳转到Action  -->  

           <result type="redirect">/r2.jsp</result>  

       </action>  

       

       <action name="r3">  

                 <!--服务器跳转的方式跳转到Action -->  

           <result type="chain">r1</result>  

       </action>  

       

       <action name="r4">  

                 <!--客户端跳转的方式跳转到Action -->  

           <result type="redirectAction">r2</result>  

       </action>  

<!--当要跳转的Action在别的包下的时候 应该这样写-->  

             <action name="r5">  

              <result type="china">  

                  <parma name="actionName">dashboard</param>  

                  <parma name="namespace">/sesure</param>  

              </result>  

       </action>  

 

18、30_尚学堂马士兵_Struts2_Global_Results_全局结果集  

<package name="user" namespace="/user" extends="struts-default">  

<!-- 配置全局的结果集:当返回的result没有配置的时候会执行全局结果集的配置-->  

       <global-results>  

           <result name="mainpage">/main.jsp</result>  

       </global-results>  

       

       <action name="index">  

           <result>/index.jsp</result>  

       </action>    

   </package>  

<!--关键字extends的使用:我想在下面的这个配置包中使用上面那个包中的结果集,那么可以使用extends关键字继承上一个包  

<package name="admin" namespace="/admin" extends="user">  

       <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">  

           <result>/admin.jsp</result>  

       </action>  

   </package>  

 

17、31_尚学堂马士兵_Struts2_动态结果集_dynamic_result  

可以在strtus.xml文件中动态的指定返回的结果集。  

public class UserAction extends ActionSupport {  

   private int type;  

   

   private String r;  

 

   public String getR() {  

       return r;  

   }  

 

   public void setR(String r) {  

       this.r = r;  

   }  

 

   public int getType() {  

       return type;  

   }  

 

   public void setType(int type) {  

       this.type = type;  

   }  

 

   @Override  

   public String execute() throws Exception {  

       if(type == 1) r="/user_success.jsp";  

       else if (type == 2) r="/user_error.jsp";  

       return "success";  

   }  

}  

struts.xml文件中的配置:  

<package name="user" namespace="/user" extends="struts-default">  

       

       <action name="user" class="com.bjsxt.struts2.user.action.UserAction">  

<!--可以用${属性名}的方式取得Action中的属性,在服务器端判断好相应的跳转路径然后存到变量里 然后再struts.xml文件中用这种方式取出来,可以极大的增加配置文件的灵活性 -->  

           <result>${r}</result>  

       </action>        

   </package>  

 

 

18、32_尚学堂马士兵_Struts2_带参数的结果集  

访问链接格式:<a href="user/user?type=1">传参数</a>  

public class UserAction extends ActionSupport {  

   private int type;  

   

   public int getType() {  

       return type;  

   }  

 

   public void setType(int type) {  

       this.type = type;  

   }  

 

   @Override  

   public String execute() throws Exception {  

       return "success";  

   }  

 

}  

    当从一个Action跳转到另一个Action的时候,如果需要传值并且是服务器端的跳转,没有必要再struts.xml文件result的跳转路径中进行传值操作,因为多个服务器端的跳转,共享的是同一个值栈,可以直接取到,但是如果是客户端的跳转(redirect)的方式进行跳转则需要进行如下的配置:  

<package name="user" namespace="/user" extends="struts-default">  

       <action name="user" class="com.bjsxt.struts2.user.action.UserAction">  

                 <!-- 用${}的方式是从值栈取值,注意:不是El表达式 -->  

           <result type="redirect">/user_success.jsp?t=${type}</result>  

       </action>        

   </package>  

但是如果在jsp页面取出传输的值用<s:property value="t"/>是取不到的,因为这种方式是在值栈里取值而我们跳转道德是一个jsp页面不是一个Action所以值栈为空,但是我们可以在ActionContext中进行取值:<s:property value="#parameters.t"/>  

15、23_尚学堂马士兵_Struts2_模块包含


<struts>


   <constant name="struts.devMode" value="true" />


   <include file="login.xml" />


</struts>


可以将别的写好的配置文件直接包含到struts得配置文件中,方便多人开发避免不必要的配置文件冲突.


login.xml


<?xml version="1.0" encoding="UTF-8" ?>


<!DOCTYPE struts PUBLIC


   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"


   "http://struts.apache.org/dtds/struts-2.0.dtd">



<struts>


   <package name="login" extends="struts-default" namespace="/login">


       <action name="login*" class="com.bjsxt.struts2.user.action.LoginAction{1}">


           <result>/user_login_success.jsp</result>


       </action>


   </package>


</struts>



16、24_尚学堂马士兵_Struts2_默认Action


<package name="default" namespace="/" extends="struts-default">


        <!-- 当配置文件中没有用户要访问的Aciton的时候,会调用<default-action-ref 所定义的Action --处理错误页面 -->


     <default-action-ref name="index"></default-action-ref>


     <action name="index">


      <result>/default.jsp</result>


     </action>


   </package>



17、27_尚学堂马士兵_Struts2_结果类型_result_type_1


   ResultType的最常用的几种配置:(四种配置分别代表了四种不同的跳转方式)


    <package name="resultTypes" namespace="/r" extends="struts-default">


     <action name="r1">


                 <!--type不写默认的为dispatcher:用服务器跳转跳转到结果页面--只能跳转到页面,不能跳转到Action -->


       <result type="dispatcher">/r1.jsp</result>


     </action>


 


     <action name="r2">


                 <!--客户端跳转的方式跳转到结果页面  只能跳转到页面,不能跳转到Action  -->


       <result type="redirect">/r2.jsp</result>


     </action>


 


     <action name="r3">


                 <!--服务器跳转的方式跳转到Action -->


       <result type="chain">r1</result>


     </action>


 


     <action name="r4">


                 <!--客户端跳转的方式跳转到Action -->


       <result type="redirectAction">r2</result>


     </action>


<!--当要跳转的Action在别的包下的时候 应该这样写-->


             <action name="r5">


              <result type="china">


                  <parma name="actionName">dashboard</param>


                  <parma name="namespace">/sesure</param>


              </result>


     </action>



18、30_尚学堂马士兵_Struts2_Global_Results_全局结果集


<package name="user" namespace="/user" extends="struts-default">


<!-- 配置全局的结果集:当返回的result没有配置的时候会执行全局结果集的配置-->


     <global-results>


      <result name="mainpage">/main.jsp</result>


     </global-results>


 


     <action name="index">


      <result>/index.jsp</result>


     </action>


   </package>


<!--关键字extends的使用:我想在下面的这个配置包中使用上面那个包中的结果集,那么可以使用extends关键字继承上一个包


<package name="admin" namespace="/admin" extends="user">


     <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">


      <result>/admin.jsp</result>


     </action>


   </package>



17、31_尚学堂马士兵_Struts2_动态结果集_dynamic_result


可以在strtus.xml文件中动态的指定返回的结果集。


public class UserAction extends ActionSupport {


 private int type;



 private String r;



 public String getR() {


  return r;


 }



 public void setR(String r) {


  this.r = r;


 }



 public int getType() {


  return type;


 }



 public void setType(int type) {


  this.type = type;


 }



 @Override


 public String execute() throws Exception {


  if(type == 1) r="/user_success.jsp";


  else if (type == 2) r="/user_error.jsp";


  return "success";


 }


}


struts.xml文件中的配置:


<package name="user" namespace="/user" extends="struts-default">


 


     <action name="user" class="com.bjsxt.struts2.user.action.UserAction">


<!--可以用${属性名}的方式取得Action中的属性,在服务器端判断好相应的跳转路径然后存到变量里然后再struts.xml文件中用这种方式取出来,可以极大的增加配置文件的灵活性 -->


       <result>${r}</result>


     </action>    


   </package>




18、32_尚学堂马士兵_Struts2_带参数的结果集


访问链接格式:<a href="user/user?type=1">传参数</a>


public class UserAction extends ActionSupport {


 private int type;



 public int getType() {


  return type;


 }



 public void setType(int type) {


  this.type = type;


 }



 @Override


 public String execute() throws Exception {


  return "success";


 }



}


    当从一个Action跳转到另一个Action的时候,如果需要传值并且是服务器端的跳转,没有必要再struts.xml文件result的跳转路径中进行传值操作,因为多个服务器端的跳转,共享的是同一个值栈,可以直接取到,但是如果是客户端的跳转(redirect)的方式进行跳转则需要进行如下的配置:


<package name="user" namespace="/user" extends="struts-default">


     <action name="user" class="com.bjsxt.struts2.user.action.UserAction">


                 <!-- 用${}的方式是从值栈取值,注意:不是El表达式 -->


       <result type="redirect">/user_success.jsp?t=${type}</result>


     </action>    


   </package>


但是如果在jsp页面取出传输的值用<s:property value="t"/>是取不到的,因为这种方式是在值栈里取值而我们跳转道德是一个jsp页面不是一个Action所以值栈为空,但是我们可以在ActionContext中进行取值:<s:property value="#parameters.t"/>


相关文章
|
11月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
5667 114
|
12月前
|
机器学习/深度学习 人工智能 机器人
文本分块大揭秘,五种境界让你的RAG系统从菜鸟变大神
如果你的AI应用程序返回的答案总是不着边际,问题可能出在文本分块上!本文用轻松幽默的方式,带你玩转从基础到高级的五种文本分块策略,让你的RAG系统检索效率提升10倍。无论你是RAG新手还是老手,这篇文章都能让你事半功倍!
672 0
|
弹性计算 人工智能 应用服务中间件
一键部署开源DeepSeek并集成到企业微信
DeepSeek近期发布了两款先进AI模型V3和R1,分别适用于通用应用和推理任务。由于官方API流量过大,建议通过阿里云的计算巢进行私有化部署,以确保稳定使用。用户无需编写代码即可完成部署,并可通过AppFlow轻松集成到钉钉、企业微信等渠道。具体步骤包括选择适合的机器资源、配置安全组、创建企业微信应用及连接流,最后完成API接收消息配置和测试应用。整个过程简单快捷,帮助用户快速搭建专属AI服务。
2883 7
一键部署开源DeepSeek并集成到企业微信
|
人工智能 自然语言处理 Java
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手
本文介绍了如何通过Model Context Protocol (MCP) 协议将传统Spring Boot服务改造为支持AI交互的智能系统。MCP作为“万能适配器”,让AI以统一方式与多种服务和数据源交互,降低开发复杂度。文章以图书管理服务为例,详细说明了引入依赖、配置MCP服务器、改造服务方法(注解方式或函数Bean方式)及接口测试的全流程。最终实现用户通过自然语言查询数据库的功能,展示了MCP在简化AI集成、提升系统易用性方面的价值。未来,“对话即服务”有望成为主流开发范式。
10327 7
|
小程序 API 决策智能
Multi-Agent实践第1期:5分钟上手AgentScope
阿里云与魔搭社区联合举办Create@AI创客松,邀请开发者探索基于多智能体的人机协作模式。活动提供资源支持和专家指导,获胜者可获得近5万元现金奖励及6亿次千问调用额度。参赛者需准备大模型API,如DashScope或OpenAI,使用AgentScope开源框架开发多智能体应用。立即报名参加:[报名链接](https//startup.aliyun.com/special/aihackathon4)。
|
关系型数据库 数据库
很久没有登录CSDN了
    很长时间没有登录CSDN以及自己的博客了!     今天工作闲暇之余突然想起很久没有维护自己的博客,很久没有到CSDN上看看最近的行业动态,了解一下IT界的八卦新闻以及程序员们的话题。
1246 0
|
18天前
|
人工智能 缓存 前端开发
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
DeepSeek Harness + DeepSeek V4 Pro 项目实战保姆级教程!手把手带你从零安装开源 AI 编程工具,开发架构图、知识讲解网站、3D 网页游戏、全栈 AI 应用 4 个项目,覆盖运行模式选择、插件安装与开发,看看能不能对标 Claude。
12977 81
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
|
6天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
11天前
|
Web App开发 人工智能 API
16 个超火的 DeepSeek Harness 插件,大肥鱼已经落后 N 个版本了。。。
DeepSeek Harness 精选插件推荐合集,从图片识别、浏览器操控、多 Agent 协作到手机远程控制,一口气带你看完 DSH 社区热门的十几个插件,覆盖技能扩展、UI 界面增强、整活玩法三大类,让你的鲸鱼变得更强。
1670 3