Struts2 注解详解

来源:互联网 发布:票务系统源码 php 编辑:程序博客网 时间:2024/06/03 22:47

使用注解来配置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>{@Autowiredprivate WorkerService workerService;//参数  Worker worker = new Worker();@Overridepublic Worker getModel() {// TODO Auto-generated method stubreturn 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));}}


原创粉丝点击