Struts2 注解详解

给大家推荐个靠谱的公众号程序员探索之路,大家一起加油 

使用注解来配置Action的最大好处就是可以实现零配置,但是事务都是有利有弊的,使用方便,维护起来就没那么方便了。 

要使用注解方式,我们必须添加一个额外包:struts2-convention-plugin-2.x.x.jar。 

虽说是零配置的,但struts.xml还是少不了的,配置如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<!--加载约束文件 -->
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<!--进行struts2的配置 -->
<struts>

	<!-- 请求参数的编码方式 -->
	<constant name="struts.i18n.encoding" value="UTF-8" />

	<!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开 -->
	<!-- <constant name="struts.action.extension" value="action,do,htm" /> -->

	<!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开 -->
	<constant name="struts.configuration.xml.reload" value="true" />

	<!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 -->
	<constant name="struts.devMode" value="true" />

	<!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 -->
	<constant name="struts.serve.static.browserCache" value="false" />

	<!-- 指定由spring负责action对象的创建-->
	 <constant name="struts.objectFactory" value="spring"/> 

	<!-- 是否开启动态方法调用 -->
	<constant name="struts.enable.DynamicMethodInvocation" value="false" />

</struts>



Action类注解

 

 

package com.zzh.web.action;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.alibaba.fastjson.JSON;
import com.opensymphony.xwork2.ModelDriven;
import com.zzh.domain.Worker;
import com.zzh.service.WorkerService;

/**
 * @author zzh
 * @Version 1.0
 * @Date 2017年10月27日
 * @备注
 */
@Controller
@ParentPackage(value="struts-default")
@Namespace("/")
public class WorkerAction implements ModelDriven<Worker>{
	@Autowired
	private WorkerService workerService;
	
	//参数  
	Worker worker = new Worker();
	@Override
	public Worker getModel() {
		// TODO Auto-generated method stub
		return worker;
	}
	//其他的参数   当其他参数是  类中的属性的  一部分时  不要这样写  会获取不到   他会自动赋值到worker中
	private int flag;
	public int getFlag() {
		return flag;
	}
	public void setFlag(int flag) {
		this.flag = flag;
	}

	@Action(value="addWorker",results={
		@Result(name="worker",location="/worker.jsp")	
	})
	public String addWorker() {
		// 获取响应
		//HttpServletResponse response = ServletActionContext.getResponse();
		// 获取请求
		//HttpServletRequest request = ServletActionContext.getRequest();
		System.out.println(flag);
		System.out.println(worker);
		workerService.addWorker(worker);
		return "worker";
	}
	@Action(value="findAllWorker",results={
			@Result(name="findAllWorker",location="/worker.jsp")	
		})
	public String findAllWorker(){
		// 获取请求
		HttpServletRequest request = ServletActionContext.getRequest();
		System.out.println(workerService.findAllWorker().size());
		request.setAttribute("workers", workerService.findAllWorker());
		return "findAllWorker";
	}
	@Action(value="removeWorker",results={
			@Result(name="removeWorker",location="/worker.jsp")	
		})
	public String removeWorker(){
		System.err.println(worker.getId());
		System.err.println(flag);
		workerService.removeWorkerById(worker.getId());
		findAllWorker();
		return "removeWorker";
	}
	//测试  如果想返回JSON格式数据  改怎么处理
	@Action(value="resJSON",results={
	})
	public void json() throws IOException{
		List<Worker> list = new ArrayList<>();
		for (int i = 0; i < 10; i++) {
			Worker worker=new Worker();
			worker.setAge(10);
			worker.setName("王五");
			list.add(worker);
		}
		
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType("application/json;UTF-8");
		response.getWriter().print(JSON.toJSONString(list));
	}

}

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值