struts2笔记

我用的是Struts2为2.3.4版本的

Struts2的了解

1)Struts2框架主要是通过过滤器将Struts集成到Web应用中去,这个过滤器就是org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.通过它Struts2可以拦截Web应用中的HTTP请求,并将这个请求转发到指定的Action进行处理,Action根据处理过后的结果返回给客户端指定的页面。

web.xml的配置
 

<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>
	<package name="myPackage" extends="struts-default">
		<action name="first">
			</span><!--处理成功后映射的页面 -->
			</span><result>/first.jsp</result>
		</action>
	</package>
</struts>


Action对象

1)Action对象是Struts2的重要对象,主要用于HTTP请求,通常情况下,我们实现一个Action接口只要是实现其中的execute()方法还有了解其中的5个静态常量。
public interface Action{
	public static final String SUCCESS = "success";
	public static final String NONE= "none";
	public static final String SUCCESS = "error";
	public static final String SUCCESS = "input";
	public static final String SUCCESS = "login";
	public String execute() throws Exception;
}

Struts2的Action动态方法调用

1)指定method属性
<struts>
	<package name="user" namespace="/" extends="struts-default">
		<action name="page" class="topPage.UserAction">
			<result>jsp/userPage.jsp</result>
		</action>
		
		<action name="add" method="addUser" class="topPage.UserAction">
			<result>jsp/userAdd.jsp</result>
		</action>
		
		<action name="update" method="updateUser" class="topPage.UserAction">
			<result>jsp/userUpdate.jsp</result>
		</action>
		
		<action name="remove" method="removeUser" class="topPage.UserAction">
			<result>jsp/userRemove.jsp</result>
		</action>
	</package>
</struts>
2)使用感叹号(!)
<struts>
	<package name="user" namespace="/" extends="struts-default">
		<action name="page" class="topPage.UserAction">
			<result>jsp/userPage.jsp</result>
			<result name="addUser">jsp/userAdd.jsp</result> 
			<result name="updateUser">jsp/userUpdate.jsp</result>
			<result name="removeUser">jsp/userRemove.jsp</result>
		</action>
	</package>
	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
</struts>
其中addUser、updateUser、removeUser跟Action中的方法名称和返回值一致。
public String addUser(){
		System.out.println("新增用户");
		return "addUser";
	}
	
	public String updateUser(){
		System.out.println("修改用户");
		return "updateUser";
	}
	
	public String removeUser(){
		System.out.println("删除用户");
		return "removeUser";
	}
3)使用通配符(*)
<struts>
	<package name="user" namespace="/" extends="struts-default">
		<action name="page_*" method="{1}" class="topPage.UserAction">
			<result>jsp/userPage.jsp</result>
			<result name="addUser">jsp/userAdd.jsp</result>
			<result name="updateUser">jsp/userUpdate.jsp</result>
			<result name="removeUser">jsp/userRemove.jsp</result>
		</action>
	</package>
	<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
</struts>    
其中addUser、updateUser、removeUser跟Action中的方法名称和返回值一致。
public String addUser(){
		System.out.println("新增用户");
		return "addUser";
	}
	
	public String updateUser(){
		System.out.println("修改用户");
		return "updateUser";
	}
	
	public String removeUser(){
		System.out.println("删除用户");
		return "removeUser";
	}

接收参数

1)使用Action属性接收参数
Action代码
public class UserAction extends ActionSupport {

	private String name;
	private int age;
	private char sex;
	
	public String userMessage(){
		System.out.println("用户信息:"+name+", "+age+", "+sex);
		return 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 char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		this.sex = sex;
	}
	
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
}
struts.xml配置文件代码
<package name="login" namespace="/" extends="struts-default">
		<action name="login" method="userMessage" class="topPage.UserAction">
			<result>jsp/userPage.jsp</result>
		</action>
	</package>
login.jsp代码
<form action="login.action" method="post">
    		用户名:<input type="text" name="name">
    		年龄:<input type="text" name="age">
    		性别:<input type="text" name="sex">
    		<input type="submit" value="提交">
    	</form>
2)使用Domain Model接收参数
实体类代码
public class User {

	private String name;
	private int age;
	private char sex;
	
	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 char getSex() {
		return sex;
	}
	public void setSex(char sex) {
		this.sex = sex;
	}
}
Action类代码
public class UserAction extends ActionSupport {

	private User user;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String userMessage(){
		System.out.println("用户信息:"+user.getName()+", "+user.getAge()+", "+user.getSex());
		return SUCCESS;
	}

	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
}
login.jsp代码
<form action="login.action" method="post">
    		用户名:<input type="text" name="user.name">
    		年龄:<input type="text" name="user.age">
    		性别:<input type="text" name="user.sex">
    		<input type="submit" value="提交">
    	</form>
配置文件不变

3)使用ModelDriven接收参数
实体类不变
Action类代码
public class UserAction extends ActionSupport implements ModelDriven<User> {//实现ModelDriven接口

	private User user = new User();//必须实例化
	
	public String userMessage(){
		System.out.println("用户信息:"+user.getName()+", "+user.getAge()+", "+user.getSex());
		return SUCCESS;
	}
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}

	@Override
	public User getModel() {//返回前台要展示的对象
		return user;
	}
}
login.jsp代码
<form action="login.action" method="post">
    		用户名:<input type="text" name="name">
    		年龄:<input type="text" name="age">
    		性别:<input type="text" name="sex">
    		<input type="submit" value="提交">
    	</form>
配置文件不变


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值