最近,我在自学Struts2框架,但是在学习的过程中会发现许多东西学了时间长了就忘了,所以还是觉得把自己学的东西记下来,方便以后查阅。
1.Struts入门
1.1介绍
Struts2 是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架。它基于当年的Webwork和XWork框架,继承其优点,同时做了相当的改进。Struts2现在在Java Web开发界的地位可以说是大红大紫,从开发人员的角度来分析,Struts2之所以能够如此的深入开发人员之心,与其优良的设计是分不开的。
1.2优点
1.Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程。
2.使用OGNL进行参数传递。
3.强大的拦截器 。
4.易于测试
5.易于扩展的插件机制
6.模块化等
1.3 helloWorld示例
本示例是在Eclipse中完成的。下面是整个工程的一个目录截图
JavaBean类,在com.bean包中定义了一个简单的User类,包含一个 ID属性和name属性,代码如下:
<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.bean;
public class User {
private String name;
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
</span>
动作类(Action class)
Action类来响应用户的操作,当用户点击一个URL。 Action类中的一个或多个方法被执行,并返回一个字符串结果。基于结果的值,一个特定的JSP页面的呈现方式。Action的实现方式有三种:(1).定义一个普通的类,类中只要有一个public String execute()方法且返回一个字符串即可。(2)定义一个类,实现Action接口,xwork2.Action这个包的。(3)也是最常用的一种,继承xwork2.ActionSupport这个类。本例中就是采用第三种方法,代码如下:
package com.action;
import com.bean.User;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute() throws Exception {
return "success";
}
}
视图(Result)
本例中主要有两个视图,一个是登陆视图(login.jsp),还有就是登陆成功后返回的视图(HelloWorld.jsp)
login.jsp代码如下
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action="hello">
学号<input type="text" name="user.id"/>
<br>
姓名<input type="text" name="user.name"/>
<input type="submit" value="Sumbit"/>
</form>
</body>
</html>
HelloWorld.jsp代码如下:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World, ${user.name}
</body>
</html>
让我创建一个文件为: struts.xml . 由于Struts 2的要求struts.xml存在的类文件夹中。 因此创建struts.xml在 WebContent/WEB-INF/classes 目录中. Eclipse默认情况下不会创建 "classes" 文件夹, 因此你要自己去创建. 在WEB-INF文件上右键选择 新建上当 . 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="helloworld" extends="struts-default" namespace="/" >
<action name="hello"
class="com.action.HelloAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
</struts>
下一步是创建一个web.xml文件这是任何请求发送到Struts2的一个切入点。Struts2的应用程序的入口点,将是一个部署描述符(web.xml)中定义的过滤器。
在web.xm文件中,我们定义一个过滤器org.apache.struts2.dispatcher.FilterDispatcher. web.xml文件需要创建WEB-INF文件夹下的WebContent。 Eclipse在创建项目时已经创建了一个web.xml文件。所以,让我们只需要修改如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts01</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>
</web-app>
启动tomcat,在浏览器输入http://localhost:8089/struts01/login.jsp等到下面视图
输入学号 1,姓名 messi 得到
到此,一个简单的Struts2示例就完成了。