struts2之01了解和简单的运用

1.什么是struts2?

a.Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。

b.Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。


struts的官方网址:http://struts.apache.org


开发程序的基本步骤:

1.加载struts2类库

2.配置web.xml文件

3.开发视图层页面

4.开发控制层Action

5.在src下配置struts.xml文件

6.部署,运行项目


配置web.xml代码如下:

 <!-- 配置struts核心类 -->
  
  <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>*.action</url-pattern>
	</filter-mapping>

配置Struts2配置文件代码如下:

<?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>  
    <!-- 打开方法的动态调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
	<package name="mypackage" namespace="/" extends="struts-default" >
	<action name="user" class="com.yindan.action.UserAction">
		<result name="success" type="redirectAction">
			<param name="actionName">student!login</param>
			<param name="myname">${user.u_name}</param>
			<param name="mypwd">${user.u_pwd}</param>
		</result>
		<result name="fail">login_fail.jsp</result>
		<result name="input">login.jsp</result>
	</action>
	<action name="student" class="com.yindan.action.StudentAction">
		<result name="success">index.jsp</result>
	</action>
	</package>

</struts>


二、详细配置

2.1 Action中属性的获取

表单的name属性值必须跟action中的属性值名字一样,而且必须封装

属性名------------------------->action中属性名

属性对象名.属性名-------->action中属性

 

2.2 在struts.xml下配置编码

<!--常量配置-->

<constant name="struts.i18n.encoding"value="UTF-8"/>

 

2.3   Action方法的动态调用

A、设置是否可以动态调用

<constant name="struts.enable.DynamicMethodInvocation"value="true" />

B、动态语法  

action!方法名.action

举例:user!login.action调用名字为user的action下面的login方法

C、通配符{*}形式的动态调用

<action name= "*User"  method=”{1}”

<result>{1}_success.jsp</result>

举例:loginUser.action 调用名字为user的action下面的login方法

 

2.4 全局错误action请求结果配置        

Package下: 

         <global-results>

                  <resultname="error" >all_error.jsp</result>

         </global-results>

 

2.5 Result常用的结果类型,即type属性

A、dispatcher(默认)   转发

                  底层使用RequestDispatcher转发请求

B、redirect

          底层使用sendRedirect将请求重定向

C、redirectAction

          重定向到action

          举例:product.action?myName=${user.name}&myPwd=${user.pwd}

                  <resultname="success" type="redirectAction">

                                   <paramname="actionName">product</param>

                                   <paramname="myName">${user.name}</param>

                                   <paramname="myPwd">${user.pwd}</param>

                  </result>

三、注解形式的Struts2配置(重点)

导包:struts2-convention-plugin-2.3.33.jar

java.lang.NoClassDefFoundError  字节码错误

解决方案:导包    asm-all

3.1   Action配置

@ParentPackage      struts-default

@NameSpaces        工作空间

@Action(

Value=””,

                         Results={

@Result(name=””,location=””),........

}

)

 

 

四、约定对Action的限制

 

4.1约定Action类名:

要求Action的命名必须以“Action”为后缀,例如:UserAction、BookAction等等。可         以使用下面常量来修改后缀限制:

<constantname="struts.convention.action.suffix" value="Action"/>

4.2约定Action包名:

Com.entity.action

要求Action必须放到action、actions、struts、struts2包中。例如:cn.itcast.action、         cn.itcast.sturts、cn.itcast.action.user等等。可以使用下面常量来修改Actoin的包

<constantname="struts.convention.package.locators"value="action,actions,struts,struts2"/>

 




struts2访问ServletAPI的方式:

1.与ServletAPI解耦访问方式

//		Map<String, Object> session=ServletActionContext.getContext().getSession();
//		session.put("mysession", user);

2.与ServletAPI耦合访问方式

ServletActionContext.getRequest().getSession().setAttribute("myuser", user);


3.struts2的迭代标签

使用标签前必须写上

<% @ taglib prefix="s" uri="/struts-tags" %>


<s:iterator  value="集合对象"  status="status"  id="name">

     读取集合对象并输出显示

</s:iterator>

value属性:需要进行遍历的集合对象

status属性:表示当前迭代对象的一个实例

id属性:当前迭代元素的id,可直接访问元素,该参数可选


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值