struts2注解

来源:互联网 发布:cassandra 数据库设计 编辑:程序博客网 时间:2024/05/24 01:43

  在struts2中运用注解是把sttuts.xml文件中package节点的action配置在action类中用注解语句声明。

  我们知道通常情况下,Struts2是通过struts.xml配置的。但是随着系统规模的加大我们需要配置的文件会比较大,虽然我们可以根据不同的系统功能将不同模块的配置文件单独书写,然后通过<include>节点将不同的配置文件引入到最终的struts.xml文件中,但是毕竟还是要维护和管理这些文件,因此也会给维护工作带来很大的困扰。为了解决这个问题,可以考虑使用struts2的注解。实际上struts2中最主要的概念就是packageaction以及Interceptor等等概念,所以只要明白这些注解就可以了。

 下面以一个注册和登录的小例子来讲解struts2的注解。

一:在原来jar包的基础上导入一个包struts2-convention-plugin-2.1.8.1.jar

二:具体的代码:

登录页面:login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>注解登录页面</title></head><body><form action="login" method="post">用户名:<input name="userName" type="text"><br>密码:<input name="userPwd" type="password"><br><input type="submit" value="login"></form></body></html>

注册页面:register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>注解注册页面</title></head><body><form action="register" method="post">用户名:<input name="userName" type="text"><br>密码:<input name="userPwd" type="password"><br><input type="submit" value="register"></form></body></html>

登录或注册成功页面:index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><!-- 显示登录或注册成功的信息 -->${message }</body></html>

action:AnnoAction类

package action;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 com.opensymphony.xwork2.ActionSupport;@ParentPackage("struts-default")@Namespace("")public class AnnoAction extends ActionSupport {private static final long serialVersionUID = 1L;private String userName;private String userPwd;private String message;//登录方法@Action(value="login", results={ @Result(name = "loginSucc", location = "/index.jsp"),     @Result(name = "loginError", location = "/login.jsp") })public String login(){if(userName.equals("")){return "loginError";}message="登录成功!";return "loginSucc";}//注册方法@Action(value="register", results={ @Result(name = "registerSucc", location = "/index.jsp"),     @Result(name = "registerError", location = "/register.jsp") })public String register(){if(userName.equals("")){return "registerError";}message="注册成功!";return "registerSucc";}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPwd() {return userPwd;}public void setUserPwd(String userPwd) {this.userPwd = userPwd;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}

struts.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="default" extends="struts-default">   <action name="user" class="annoAction">   <result>/index.jsp</result>   <result name="input">/login.jsp</result>   </action>   </package> --></struts>


这样就完成了一个基于注解的action配置。

总结常用的注解如下: 

Namespace:指定命名空间。

ParentPackage:指定父包。

Result:提供了Action结果的映射。(一个结果的映射)

Results:“Result”注解列表

ResultPath:指定结果页面的基路径。

Action:指定Action的访问URL。

Actions:“Action”注解列表。

ExceptionMapping:指定异常映射。(映射一个声明异常)

ExceptionMappings:一级声明异常的数组。

InterceptorRef:拦截器引用。

InterceptorRefs:拦截器引用组。

 

原创粉丝点击