前段时间看了一些关于struts2的书籍和帖子,学了一些东西。现在把它写下来,方便以后的学习
首先的感觉是struts2还是比较简洁的,从表面看来也比较简单,可是功能却很强大。
介绍一下我的入门例子吧
我是用eclipse3.3+tomcat5.5+struts2 2.0.6 来做的。首先要建立一个tomcat工程,这很简单,然后把struts2的jar包加入进去。
做一个入门的例子需要的jar包很少,现在把它们列出来
commons-logging-1.1.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.6.jar
xwork-2.0.1.jar
现在只需要这几个.
struts2有两个配置文件,web.xml和struts.xml
1 先来看一下web.xml吧
因为struts2是基于webwork核心的,其核心类是一个转发器:
-
<?xml version="1.0" encoding="GBK"?>
-
<web-app 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">
-
<filter>
-
<filter-name>struts2</filter-name>
-
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
-
</filter>
-
<filter-mapping>
-
<filter-name>struts2</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
-
</web-app>
看到了吧,在这个web.xml文件中是不需要配置标记库的,因为 struts2会自动找到它们,并且struts2只有一个标记库,你只要在JSP页面里声明一下引用就可以了。
2 相应的登陆JSP login.jsp:
-
<%@ page language="java" contentType="text/html; charset=GBK"%>
-
<%@taglib prefix="s" uri="/struts-tags"%>
-
<html>
-
<head>
-
<title><s:text name="loginPage"/></title>
-
</head>
-
<body>
-
<s:form action="Login">
-
<s:textfield name="username" key="user"/>
-
<s:textfield name="password" key="pass"/>
-
<s:submit key="login"/>
-
</s:form>
-
</body>
-
</html>
这里key引用了国际化里相应的配置,s就是标记了,没有像struts1那样定义了几个标记库。
3 struts2的action
struts2将struts1的action和actionform集成了起来,全部放在了action里,当然这里可以使用模型驱动模式来把他们分开,不过对于属性相对较少的情况也不会有什么混乱
-
public class LoginAction implements Action
-
{
-
private String username;
-
private String password;
-
public String getUsername()
-
{
-
return username;
-
}
-
public void setUsername(String username)
-
{
-
this.username = username;
-
}
-
public String getPassword()
-
{
-
return password;
-
}
-
public void setPassword(String password)
-
{
-
this.password = password;
-
}
-
public String execute() throws Exception
-
{
-
if (getUsername().equals("123")
-
&& getPassword().equals("123") )
-
{
-
ActionContext.getContext().getSession().put("user" , getUsername());
-
return "success";
-
}
-
else
-
{
-
return "error";
-
}
-
}
action是不是很简单呢,看看他的execute()方法,体现了和servlet的分离
4 输出页面的jsp welcome.jsp:
-
<%@ page language="java" contentType="text/html; charset=GBK"%>
-
<%@taglib prefix="s" uri="/struts-tags"%>
-
<html>
-
<head>
-
<title><s:text name="succPage"/></title>
-
</head>
-
<body>
-
<s:text name="succTip">
-
<s:param>${sessionScope.user}</s:param>
-
</s:text>
-
</body>
-
</html>
5 struts.xml
-
<?xml version="1.0" encoding="GBK"?>
-
<!DOCTYPE struts PUBLIC
-
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
-
"http://struts.apache.org/dtds/struts-2.0.dtd">
-
<struts>
-
<package name="test" extends="struts-default" >
-
<action name="Login" class="test.LoginAction" >
-
<result name="error">/testjsp/error.jsp</result>
-
<result name="success">/testjsp/welcome.jsp</result>
-
</action>
-
</package>
-
<constant name="struts.custom.i18n.resources" value="messageResource" />
-
</struts>
这里只定义了action和国际化的东西
好了,现在就可以测试了
这是一个最简单的入门测试的例子,写下来为了能够记住
其实struts2还有很多的功能,像拦截器,模型驱动,和servelt的接口问题等等
要学的东西还很多