Struts2笔记_1建工程_传参方式

一、Struts2 java的一个框架技术,

1、新建一个web项目

2、导入开发环境包

3、配置web.xml 配置过滤器加入struts2的拦截器

4、Src下建struts.xml文件

5、新建一个类Action 定义要获取的变量名称,生成set get 方法  ,新建一个String execute()方法;

6、struts.xml中配置进行关联

<struts>

<package name="pk1" extends="struts-default">

<action name="hello" class="包名.类名">

<result name="action类中execute返回的String">要跳转的页面</...>

</...>

</....>

</>

如果配置文件过多,可以这样分开写

<struts>

<include file=""></include>

</struts>

二、Struts2工作组件

Servlet过滤器(响应和处理用户请求)

ActionMapper action映射解析器 定义http请求与action调用之间的映射机制

根据用户请求生成向actionProxy请求actionuri

Actionproxy action代理对象,servlet过滤器将请求的控制权交给actionproxy

Actionproxy会根据uri找到action对象,创建actioninvocation对象执行相应的action处理方法

 actioninvocation对象 实现对action处理方法和拦截器的调用

Result对象

三、Struts2处理流程

1、加载类(StrutsPrepareAndExecuteFilter

2、读取配置(struts配置文件中的action

3、派发请求(客户端发送请求)

4、调用actionfilterDispatcherstruts配置文件中读取与之相对应的action

5、启用拦截器(WebWork拦截器链自动对请求应用通用功能)

6、处理业务(回调Actoinexecute方法)

7、返回响应(通过execute方法将信息返回到FilterDispatcher

8、查找相应(根据配置查找响应是success还是error决定跳转到什么jsp

9、响应用户(jsp页面)

四、Struts2中常用的方法

implements ServletRequestAware

Private HttpServletRequest request;

Public void setServletRequest(HttpServletRequest arg){

This.request=arg;

}//声明一个HttpServletRequest 必须重写一个方法

接下来可以直接用request.setAttribute();

或者另一种写法:

ActionContext ac =ActionContext.getContext();

// 如果是session那么必须用ac.getSession()

// ac.getSession().put("error","<font color='red'> 用户名或密码错误</font>");

// ac.put("error", "<font color='red'> 用户名或密码错误</font>");//这个相当于requestsetAttribute();

或者:

ServletActionContext.getRequest().getSession().setAttribute();

Jsp页面中获取参数可以${error}或者${sessionScope/requestScopeS.error}

Action类中定义表单的属性,两者属性名称必须一致,提供get set 方法 即可接受传来的参数

可以这样写

先写一个javaBean 将传递参数封装成一个类

如:class user

Private string name;

Private string pass;

Public void setname(string name){

This.name=name;

}

Public void setpass(string pass){

This.pass=pass;

}

Public String getname(){}

Public String getpass(){}

然后在Action的类中 定义该类的对象就好了

Private user user;

Public user getuser(){

Return user;

}

Public void setuser(user user){

This.user=user;

}

但是在jsp中命名textfiledname属性就为“user.name

关于struts2页面取值方式

 

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

1.Action中以request.setAttribute("xs0101",xs0101);方式传给页面

struts2标签方式:
<s:property value="#request.xs0101.xsxm" />
注意“#request” 这是从request中取值,不加这个你发现你取不到值
EL表达式方式:${xs0101.xsxm}
可以直接取

2.Action中以setXs0101(Xs0101 xs0101);方法 方式传给页面

struts2标签方式:
<s:property value="xs0101.xsxm" />
可以直接取
EL表达式方式:${xs0101.xsxm}
可以直接取

这是路径的重定向配置:

<actionname="*"class="com.struts2.action.LoginAction" ethod="{1}">

<!-- <result name="ok">/ok.jsp</result> -->

<result name="error" type="redirect" >/index.jsp</result>

</action>

如果不用type="redirect"那么地址栏显示的是一个action结尾

重定向到一个action

<result name="error" type="redirectAction" >

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

<param name="actionName">sina</param>

</result>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值