基于Struts2的第一个web应用
主要写一个页面,访问时显HelloWorld、
1、新建一个类
类名HelloWorldAcion
具体如下:
package cn.itcast.action;
public class HelloWorldAction {
private String message;
public String getMessage() {
return message;
}
public String execute() {
message = "Hello World";
return "success";
}
}
个人理解:针对配置文件,当请求http://localhost:8080/Strut2Test/test/helloworld该url时,会调用该类里面的execute方法,且该execute方法只能是返回String。
2、新建view页面,即hello.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>第一个Struts小应用</title>
</head>
<body>
${message}
</body>
</html>
个人理解:
在jsp文件使用el表达式${message},是通过反射机制调用了HelloWorldAction的getMessage()方法。message是属性~
3、配置struts.xlm
<package name="itcast" namespace="/test" extends="struts-default">
<action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="execute">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
struts.xlm配置中的包介绍
在Struts2框架中使用包来管理Action,包的作用和java中的类包是非常相似的,它用于管理一组业务功能相关的action。在实际应用中,要把一组业务功能相关的Action放在同一个包下。
配置包时必须指定name属性,该name属性值可以任意取名,但必须是唯一,他不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下Action的路径的一部分,如访问上述例子的Action,访问路径为:/test/helloworld.action(http://localhost:8080/Strut2Test/test/helloworld)
namespace属性可以不配置,对本例而言,如果不指定该属性,则默认的命名空间为“”空字符串。(http://localhost:8080/Strut2Test/helloworld)
通常每个包都应该继承struts-default包,因为Struts2很多核心的功能都是通过拦截器来实现的。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。struts-default定义了这些拦截器和Result类型。可以这么说:当包继承struts-default包才可以使用Struts2的黑心功能。struts-default.xml也是Struts2默认的配置文件。Struts2每次都会自动加载struts-default.xml文件。
包还可以通过abstract=“true”定义为抽象包,抽象包中不包含action。