Struts2 框架总结(四) :注解方式开发

匿名 (未验证) 提交于 2019-12-03 00:22:01

改造LoginAction,使用注解方式

类上使用的注解

action 方法使用的注解

将要访问的action打上Action注解,value是访问的action的路径名,result是返回结果集,返回的字符串可以跳转到相应的路径

@Action(value="login",results={@Result(name="success",location="/login_success.html"),

@Result(name="fail",location="/login_fail.html")})


这时候可以把xml里的配置删除

LoginAction:

package sdibt.fly.action;  import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession;  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; @Namespace("/login") @ParentPackage("struts-default") public class LoginAction {  	private String username;//请求的账号 	private String password;//请求的密码 	 	@Action(value="login",results={@Result(name="success",location="/login_success.html"), 			@Result(name="fail",location="/login_fail.html")}) 	public String login(){ 		//这里应该调用service的验证登录功能,为了方便演示,在这里就固定验证了 		//如果账号是admin,密码是ok,就登录成功,否则登录失败 		if(this.username.equals("admin")&&this.password.equals("ok")){ 			return "success"; 		}else{ 			return "fail"; 		}  	} 	@Action(value="register",results={@Result(name="reg",location="reg_success")}) 	public String register(){ 		//获取request 		HttpServletRequest request = ServletActionContext.getRequest(); 		//获取session 		HttpSession session = request.getSession(); 		//获取application 		ServletContext application = request.getServletContext();	 		 		request.setAttribute("username", "小明"); 		session.setAttribute("username", "小李"); 		application.setAttribute("username", "小赵"); 		return "reg"; 		 	} 	 	public String getUsername() { 		return username; 	} 	public void setUsername(String username) { 		this.username = username; 	} 	public String getPassword() { 		return password; 	} 	public void setPassword(String password) { 		this.password = password; 	}  }

拦截器注解配置

使用上一章使用的拦截器,拦截器的本身不用改变,不过还要再xml文件里配置一下

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> 	<package name="custom" extends="struts-default"> 	 		<!-- 定义拦截器 --> 		<interceptors> 			<interceptor name="myinter" class="sdibt.fly.interceptor.MyInterceptor"></interceptor> 			<!-- 定义拦截器栈 --> 			<interceptor-stack name="myStack"> 				<!-- 先经过一些默认的拦截器,在经过自己定义的拦截器 --> 				<interceptor-ref name="defaultStack"></interceptor-ref> 				<interceptor-ref name="myinter"></interceptor-ref> 			</interceptor-stack> 		</interceptors>    </package> </struts>

配置action类,要继承定义拦截器的包custom

package sdibt.fly.action; import java.util.Map;  import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.InterceptorRef; import org.apache.struts2.convention.annotation.InterceptorRefs; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result;  import com.opensymphony.xwork2.ActionContext; @Namespace("/comment") //使用拦截器 @InterceptorRefs(@InterceptorRef("myStack")) @ParentPackage("custom") public class CommentAction {  	private String commentText; 	 	 	@Action(value="comment",results={@Result(name="success",location="/comment_success.jsp")}) 	public String comment(){ 		//将接受到的文字带到另一个界面 		ActionContext ctx = ActionContext.getContext(); 		 		Map map = (Map) ctx.get("request"); 		 		map.put("commentText", this.commentText); 			 		return "success"; 	} 	public String getCommentText() { 		return commentText; 	}  	public void setCommentText(String commentText) { 		this.commentText = commentText; 	} }  



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!