Struts 2注解实例一

本文将通过一个前台通过表单输入user,来实现hello user的方式来讲述Struts2中使用注解。

首先要引入以下jar包

commons-fileupload-1.2.1 
commons-io-1.3.2 
commons-logging-1.1 
freemarker-2.3.13 
junit-3.8.1 
onl-2.6.11 
spring-test-2.5.6 
struts2-convention-plugin-2.1.6 
struts2-core-2.1.6 
xwork-2.1.2

首先要确定一下版本是否正确,此外struts2-convention-plugin-2.1.6 是必须加入的,这个包是用来注解的核心包。
目录的结构如下:

structure of the hello user example

structure of the hello user example


接下来书写表单输入页面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@taglib uri="/struts-tags" prefix="s" %>
<html>    
	<head>      
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        
		<title>Hello World</title>   
	</head>     
	<body>      
		<s:form action="welcome-user" >          
		<s:textfield name="userName" label="User Name" />           
		<s:submit />        
		</s:form>    
	</body> 
</html>

需要注意的是表单中action为url的名字。
我们在WelcomeUser 的类中布置好欢迎信息,返回“success”。

package com.vaannila.action; 
 
 
import com.opensymphony.xwork2.ActionSupport; 
 
 
public class WelcomeUser extends ActionSupport{ 
 
	private String userName; 
 
	private String message; 
 
 
 
	public String execute() { 
 
		message = "Welcome " + userName; 
 
		return SUCCESS; 
 
	} 
 
 
 
	public void setUserName(String userName) { 
 
		this.userName = userName; 
 
	} 
 
 
 
	public void setMessage(String message) { 
 
		this.message = message; 
 
	} 
 
 
 
	public String getUserName() { 
 
		return userName; 
 
	} 
 
 
 
	public String getMessage() { 
 
		return message; 
 
	} 
}

这里有没有发现我们action的url和名字有没有相似之处呢?
我们再welcome-user.jsp 显示返回的欢迎信息。如下:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!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=ISO-8859-1"> 
		<title>Welcome User</title> 
	</head> 
	<body> 
 
 
		<h1>${message}</h1> 
 
 
	</body> 
</html>

配置web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
 
 
 
<display-name>Struts2Example1</display-name> 
 
 
 
<filter> 
 
	<filter-name>struts2</filter-name> 
 
	<filter-class> 
 
	org.apache.struts2.dispatcher.ng.filter. StrutsPrepareAndExecuteFilter 
 
	</filter-class> 
 
</filter> 
 
 
 
<filter-mapping> 
 
	<filter-name>struts2</filter-name> 
 
	<url-pattern>/*</url-pattern> 
 
</filter-mapping> 
 
 
 
<welcome-file-list> 
 
	<welcome-file>index.jsp</welcome-file> 
 
</welcome-file-list> 
 
 
</web-app>

部署执行下http://localhost:8080/Struts2Example1,我们可以看到。

Annotation1Pic2

Annotation1Pic2


随便输入一个名字,即可得到如下
Annotation1Pic3

Annotation1Pic3

接下来,我们看下它是如何进行的。
Convention plug-in是在后台运行的。

  • considered as the root package for the Convention plug-in.
    默认下,Convention plug-in 会在struts,struts2,action或者actions等包中进行查找。这里,我们的包名为com.vaannila.action。任何满足以上条件的的包都将被引入。
  • action类应该要继承com.opensymphony.xwork2.Action接口或者action类名以Action结尾。我们的例子中,WelcomeUser继承于com.opensymphony.xwork2.ActionSupport,从而也是实现了com.opensymphony.xwork2.Action。
  • Convention plug-in使用action的类名来映射成对应的URL。例子中的类名为WelcomeUser,它对应的URL为welcome-user.
  • 接下里看看下results,他并不知道文件在哪个目录下面,但Convention plug-in将根据Action名来进行判断,例如,如何返回“success”,那么将自动查找文件名为welcome-user-success.jsp 或 welcome-user.jsp。

Source :Download
Source + Lib :Download

原文地址:
http://www.vaannila.com/struts-2/struts-2-example/struts-2-annotation-example-1.html


One Response to “Struts 2注解实例一”

  1. [...] 这个例子将继续前面讲的例子 [...]

Post a Comment