Struts2基本流程及基础知识问答

这是我在struts2学习过程中的一些思考和查阅所得答案:
我能看懂的是什么?

  • 1、为什么要用接口和实现类。

增加项目的可扩展性,方便后期升级和维护。

  • 2、项目的整体流程。

HTML页面(JQuery Ajax 提交action请求)——》控制类action类——》调用service处理业务逻辑——》调用Dao层存取数据

我不能看懂的是什么?

  • 1、使用struts需要什么配置?

web.xml(Tomcat webapp ROOT下复制):配置struts2的核心控制器FilterDispatcher;为FilterDispatcher建立映射。

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<filter>
<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

struts.xml:

<!--struts的配置都要在这个里面-->
<struts>
        <!--增加包,以此避免action名重复-->
        <package name="包名" extends="struts-default">
             <action name="action的名称" class="该action的全限定名">
                  <result name="该action的可能返回值,例如success">success.jsp</result>
                   <result name="该action的可能返回值,例如fail">fail.jsp</result>
             </action>
        </package>
</struts>
  • 2、Action类是什么角色,怎么获取浏览器提交的数据?

Action起控制器的角色,接收请求并分流请求,然后传递给service层处理业务逻辑。
获取数据的方法:
action类中定义了和表单(或提交数据)中完全同名的属性以及其getter和setter方法,这样,Struts2框架就会自动把提交的数据赋给相应的属性,都不用专门去接收了!(如果是servlet的话还要专门去接收)

  • 3、如何在Action中往request、response或session中添加获取属性(换句话说就是怎么拿到request、response等对象)?

方式一:com.opensymphony.xwork2.ActionContext (implements java.io.Serializable)
ActionContext.getContext().getSession()
该方法返回Session的map,可以往里面添加属性,然后再页面获取。但是ActionContext不能获取HttpServletRequest和HttpServletResponse。
方式二: org.apache.struts2.ServletActionContext
class ServletActionContext :Web-specific information for actions(专为web开发设计的类)
ServletActionContext是ActionContext的子类

这样就可以获取request和response了。完美!

  • 4、Action只是一个普通的java类吗?

一般action都会继承struts2提供的ActionSupport类,该类提供了一些比较规范的常量,如SUCCESS等,并且提供了validate方法进行表单验证。

  • 5、struts.xml中包必须要继承struts-default包吗?

一般来说,用户在自己编写struts.xml是,都要使用extends继承struts-default.xml文件中定义的struts-default包,因为该包定义了一些struts2框架要使用到的资源,比如Bean、result类型、拦截器等。

  • 6、怎么使用action类?

编写好action类后,只有在struts.xml文件中配置该action才能使用它处理请求。

  • 7、Action类是控制器,那它的业务逻辑写在哪里?

首先,action类会继承struts2的ActionSupport类,然后就可以将业务逻辑重写进该类的execute方法,struts2框架会默认执行该方法里面的逻辑。

  • 8、如果我只想请求User类中的regist方法该怎么办?execute方法不是只有一个吗?

这就要用到Action类方法的动态调用了:jsp页面中的form(或Ajax请求中的请求链接)通过“action=ActionName!MethodName.action”将请求提交给Action的特定方法去处理。

  • 9、JSP+Servlet模式中视图层可以通过req获取需要装填的信息,那么作为一个更优秀的框架,struts2的视图层怎么获取Action的信息?

ONGL(Object Navigation Language)对象导航语言,是一种即简单又强大的表达式语言。它是struts2框架视图默认的表达式语言。通过使用OGNL,Struts2视图可以直接获取模型层的数据。
ONGL通常用“对象.属性”的形式来调用,如Person.name就表示person的那么属性。
如果要获取request、session等里面的信息的话,则实例如下<s:property value="#request.msg" />,具体实例在使用时再去查就好了。

  • 10、如果我要在视图中显示一个集合,应该怎么做呢?

这就要用到struts2标签库了。使用struts2中的iterator标签就可以解决该问题,实例如下

<s:iterator value="myMap" status="st">
   <s:property value="#st.getIndex()"/>
</s:iterator>

Struts2还有诸如if/else、append等等标签,使用的时候百度查就可以了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值