struts2注解

  在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:拦截器引用组。

 

你可能感兴趣的:(struts2注解)