Struts2学习笔记1
http://struts.apache.org/downloads.html,下载struts-2.0.1-all.zip,这个压缩包中包括了开发struts2所需的struts2-core.jar核心包以及其他struts2所依赖的JAR文件,另外另一些struts2的演示样例程序以及一些HTML的API文档。
二.试用struts2.0.1
1. 新建一个WEBproject,将struts-2.0.1-all.zip压缩包中的lib文件夹下的全部jar文件复制到WEBproject的/WEB-INF/lib文件夹下。
改动WEB-INF下的web.xml文件,添�例如以下内容:
<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>
<!-- 这里是设置struts2标签,也能够不用设置,由于在struts-core.jar的META-INF文件夹下已经包括了
这个tld文件,J2EE容器会自己主动地载入它 -->
<jsp-config>
<taglib>
<taglib-uri>/s</taglib-uri>
<taglib-location>
/WEB-INF/tlds/struts-tags.tld
</taglib-location>
</taglib>
</jsp-config>在web.xml中定义了一个struts2的FilterDispathcer的filter,这个FilterDispatcher用来初始化struts2而且处理全部的WEB请求。
2. 新建一个登录页面login.jsp:

<%...@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%...@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<s:form action="login">
<table align="center">
<caption><h3>用户登录</h3></caption>
<tr>
<td><s:textfield label="用户名" name="username" /></td>
</tr>
<tr>
<td><s:password label="密 码" name="password" /></td>
</tr>
<tr align="center">
<td><input type="submit" value="登录"/></td><td><input type="reset" value="重填" /></td>
</tr>
</table>
</s:form>
</body>
</html>
3.编写Action login:
package org.rainlife.struts2.action;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport ...{
private String username;
private String password;
@Override
public String execute() throws Exception ...{
if (!(getUsername().equals("rainlife"))
&& !(getPassword().equals("rainlife"))) ...{
return ERROR;
} else ...{
return SUCCESS;
}
}

public String getPassword() ...{
return password;
}

public void setPassword(String password) ...{
this.password = password;
}

public String getUsername() ...{
return username;
}

public void setUsername(String username) ...{
this.username = username;
}
}
在这个LoginAction类中,继承了ActionSupport。ActionSupport 是xwork2这个开源框架中的一个让action可以更加高速地工作的基类,它包括了action中很多可选服务的默认实现,可以让我们更加easy地自己定义一个action。
在这里我们定义了username和password两个属性并提供了对应的get/set方法。而且定义了一个execute()方法,该方法覆盖ActionSupport类中的execute()方法,能够看到,它仅仅是简单地返回一个字符串(”SUCCESS”或”INPUT”,而不像是在struts1中的返回一个ActionForward,这两个字符串也是在ActionSupport中定义的,在ActionSupport中定义了四个String属性,分别为SUCCESS,INPUT,ERROR,LOGIN。
这样,我们的action就已经完毕了,但还存在一个问题,怎么样让struts2知道我们这个自己定义的action,而且能够在HTML/JSP页面中将动作提交给action呢?答案是须要配置struts.xml文件。
4.配置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="struts2" extends="struts-default">
<action name="login" class="org.rainlife.struts2.action.LoginAction">
<result name="error">/error.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
在这个struts.xml配置文件里,能够发现和曾经的struts-config.xml已经全然不一样了,而在webwork的配置文件很类似。在这里,我们定义一个名name=”login”的action,通过class属性指向了刚才我们创建的LoginAction类,这样,就将我们定义的action告诉给了struts2。而在HTML/JSP页面中,能够通过这个”login”这个name来将动作提交给对应的Action。
假设在package中设置了namespace属性,如namespace=”/struts2”,则在JSP页面中应该将Form的action设置为”/struts2/login.action”。
5.创建error.jsp和success.jsp:
error.jsp

<%...@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>错误页面</title>
</head>
<body>
您不能登录!
</body>
</html>
success.jsp

<%...@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>成功页面</title>
</head>
<body>
您已经登录!
</body>
</html>
Struts2会依据在LoginAction中返回的字符串(ERROR或SUCCESS)来和在struts.xml中<result>中的name属性所定义的字符串匹配,并跳转到对应页面。
Struts2学习笔记1的更多相关文章
- Struts2学习笔记⑧
今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...
- Struts2学习笔记①
Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- Struts2 学习笔记(概述)
Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...
- struts2学习笔记 ⑤
拦截器初探 昨天临睡觉之前看了看拦截器,也在昨天的学习笔记里面胡诌诌了几句,今天就来好好的会会拦截器这个东西.实际上拦截器是一种模块实现的机制<起码我是这么体会的>(至于说书里面说体现了A ...
- [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤
本文地址:http://blog.csdn.net/sushengmiyan/article/details/40303897 官方文档:http://struts.apache.org/releas ...
- struts2学习笔记之二:基本环境搭建
学习struts2有一段时间了,作为一个运维人员学习的时间还是挺紧张的,写这篇文件为了方便以后复习时使用 环境: MyEclipse 10 tomcat6 jdk1.6 首先建立一个web项目,并 ...
- 【Struts2学习笔记-4】包含其他配置文件
包含其他配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLI ...
- 【Struts2学习笔记-3】常量配置
Struts2常量 配置Struts2常量值有3个地方,1)在struts.properties文件中配置常量:2)在web.xml文件中配置FileterDispatcher指定初始化参数来配置常量 ...
- struts2学习笔记(4)——数据类型转换
回过头来看昨天的那个例子. 在昨天的例子中,只转换了一个Point类,如果想转换多个Point类怎么办呢?在昨天的例子上面做一个小的修改. 首先在input.jsp页面中修改几个输入框. <s: ...
随机推荐
- HDU4515+计算日期
模拟! /* 计算过了D天后的日期 之前D天的日期 */ #include<stdio.h> int judge_year( int year ){ ==&&year%!= ...
- java this 隐式参数
第37级 this 是隐式参数, 类的方法调用时,会系统自动传递一个this的参数给方法.(这个参数是隐式传递的) 所以在方法里可以使用this这个参数. this在方法中表示对象. this(参数列 ...
- SPRING IN ACTION 第4版笔记-第六章RENDERING WEB VIEWS-004- <s:url>、<s:escapeBody>标签
一.<s:url> <s:url>可以直接生成一个url或url变量,它会在href的基础上加上应用context 1. <a href="<s:url ...
- S3C2410 ADS实验手册
http://www.evernote.com/shard/s307/sh/b45f0e60-3232-4cbb-99f6-a273236a2faa/bd865ae048ac797585303ef54 ...
- ☀【JS】检测属性
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- 【转】解决wine中文乱码的问题
原文网址:http://blog.chinaunix.net/uid-24993439-id-2979620.html 新装的wine中文全是乱码,需要修改一下几个配置文件,找到一篇比较详细的配置说明 ...
- 知识面 z
http://blog.csdn.net/sxhelijian/article/details/23163683 有了较宽和知识面,面对复试中不知道的问题,回答可以是:“这个问题,直接回答我没有把握, ...
- CentOS+Nginx一步一步开始配置负载均衡
Nginx负载均衡的理解 http://www.linuxdiyf.com/linux/10205.html Nginx是一个轻量级的.高性能的WebServer,他主要可以干下面两件事: 作为htt ...
- public staic void main 总结
jvm 就是java的操作系统.深入了解jvm很必要. public:该函数的修饰符,表示该函数是公有的,无需多言. static 对于函数的修饰,表明该方法为静态方法,可以通过类名直接调用,事项对于 ...
- linux统计文件夹某一些文件的大小总和
du -m smallgame_2006* | awk '{sum += $1}; END{print sum}' -m代表单位是MB, awk命令需要'',且命令需换行