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

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

1、新建一个web项目

2、导入开发环境包

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

4、Src下建struts.xml文件

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

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

包名.类名">

类中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"," 用户名或密码错误");

// ac.put("error", " 用户名或密码错误");//这个相当于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标签方式:

注意“#request” 这是从request中取值,不加这个你发现你取不到值
EL表达式方式:${xs0101.xsxm}
可以直接取

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

struts2标签方式:

可以直接取
EL表达式方式:${xs0101.xsxm}
可以直接取

这是路径的重定向配置:

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

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

action>

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

重定向到一个action

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

<param name="namespace">param>

<param name="actionName">sinaparam>

result>

你可能感兴趣的:(Struts2笔记_1建工程_传参方式)