前段时间看了一些关于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的接口问题等等
要学的东西还很多