Struts2框架的使用步骤

Struts2是基于MVC 的一个非常优秀的框架。Struts2的使用非常简单,这里举出一个简单的Struts2框架的使用步骤。

一、下载Jar包

从Apache网站下载Struts2的Jar包。

二、部署Struts.xml和Web.xml

打开压缩包中的Blank实例,copy其中的Struts.xml到项目的src目录下,copy其中的Web.xml中的filter部分到项目中的web.cml中。

三、复制Jar包

copy blank实例中lib目录中的所有Jar包到项目中的lib目录下。

四、写Action类

一般来说Action就是MVC中的Controller,Action一般要继承ActionSupport类

在里面写各种处理的方法即可。

五、配置Struts.xml

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

		<action name="addStudent" class="com.lubby.action.Action1"
			method="add">
			<result name="success">/welcome.jsp</result>
		</action>
	</package>
namespace是指虚拟的路径,如果namespace="student" 那么action的路径就是localhost/student/addStudent.

extends一般默认的是struts-default

action标签中的那么就是浏览器请求的地址

class属性是指处理请求的Action是哪一个,包名+Action类名

method属性是指Action中处理请求的方法名

result就是转向返回的页面

name属性是指如果方法返回的字符串匹配就返回result中的页面。


六、通配符

使用通配符的方式使得action的配置更简洁

<package name="default" namespace="/" extends="struts-default">
	
		<action name="student*" class="com.lubby.action.Action1"
			method="{1}">
			<result name="success">/student{1}.jsp</result>
		</action>
		<action name="addStudent" class="com.lubby.action.Action1"
			method="add">
			<result name="success">/welcome.jsp</result>
		</action>
	</package>

这里action的name属性的值可以有*号作为匹配的标志。method属性的{1}代表的是*的内容 。

譬如浏览器请求的是studentDelete那么method的值就是Delete,就会交给Action中的Delete方法处理。

七、Action接收参数

Action接收页面的参数非常简单。

只要在Action中声明的属性,并且写了set,get方法,那么前台的name和属性名一样,Struts就会自动调用set方法把值传给相应的属性。

如果Action中声明的属性是一个类对象,只要写了set,get方法,那么前台的name为对象名.对象属性。对象就能获得该属性值。

package com.lubby.action;

import java.util.Map;

import com.lubby.bean.Student;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Action1 extends ActionSupport{
	private String name;
	private int age;
	private Student stu;

	public String add(){
		
		System.out.println(name());
		System.out.println(age());
		System.out.println(stu.getName());
		System.out.println(stu.getAge());
		return Action.SUCCESS;	
	}
	

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Student getStu() {
		return stu;
	}

	public void setStu(Student stu) {
		this.stu = stu;
	}
	
}



前端页面

<form action="addStudent" method="get"> 
    <input type="text" name="name">
    <input type="text" name="age">
 <input type="text" name="stu.name"> <input type="text" name="stu.age"> <input type="submit"> </form>

八、result的type类型

result有个type标签,其中最常用的两个是dispatcher和redirect。

如果不写type的话,默认是dispatcher

区别:dispatcher是服务器跳转,客户端的地址栏中地址不会变的,request和session在跳转的页面保持不变。其实是整个ActionContext都没有改变。

redirect可以认为是客户端跳转,就是服务器告诉客户端重新进入新的地址,客户端的地址栏中的地址发生了改变,request和session改变了。


九、OGNL表达式

前端也需要从action中取得数值,可以通过ognl表达式的方式取到属性的值,对象的属性,session、request、application中的map对,

有两种写法:1.使用struts2中的标签,首先在jsp中引入struts2标签 <%@taglib uri="/struts-tags" prefix="s"%>,然后使用标签<s:property  value="stu.name" />这样就能在jsp中取出struts中的属性

2.使用ognl表达式${stu.teacher.tname } 可以取出stu对象的teacher对象的tname属性。

利用ognl取得session,request,application中的属性或者对象的属性。

session

<s:property value="#session.stu.name">

application

 <s:property value="#application.name"/>

request

   <s:property value="#request['age']" />

list的某个元素

<s:property value="list[0].name" />

map的某个元素

<s:property value="map.cat">








  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值