Struts2的简单示例
来源:互联网 发布:淘宝上怎么撤销投诉 编辑:程序博客网 时间:2024/06/05 06:50
1. 下载和安装Struts2,在http://struts.apache.org/下载Struts2最新版本。
Struts2的目录结构如下:
apps:该目录包含了基于Struts2的示例应用;
docs:该目录包含了Struts2Struts2的相关文档;
lib:该目录包含了Struts2框架的核心类库以及Struts2的第三方插件类库;
src:该目录包含了Struts2框架的全部源代码。
2. 新建一个web项目Struts2Demo,将lib目录下的commons-fileupload-1.3.jar、commons-io-2.0.1.jar、commons-lang3-3.1.jar、freemarker-2.3.19.jar、javassist-3.11.0.GA.jar、ognl-3.0.6.jar、struts2-core-2.3.15.1.jar和xwork-core-2.3.15.1.jar复制到项目的WEB-INF/lib目录下。
3. 编辑配置文件web.xml,配置Struts2的核心Filter:
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- 定义Struts2的核心Filter --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><!-- 让Struts2的核心Filter拦截所有请求 --><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>
4. 为Struts2Demo应用增加一个简单的用户注册处理流程,编写注册页面register.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>Register</title></head><body><form action="registerAction" method="post"><fieldset><table><tr><td>用户名:</td><td><input type="text" name="user.username"/></td></tr><tr><td>密码:</td><td><input type="password" name="user.password"/></td></tr><tr><td>性别:</td><td><input type="radio" name="user.sex" value="male" checked="checked"/>男<input type="radio" name="user.sex" value="female"/>女</td></tr><tr><td>邮箱:</td><td><input type="text" name="user.email"/></td></tr> <tr><td><input type="submit" value="登录" /></td><td> </td></tr></table></fieldset></form></body></html>
5. 编写User实体:
package com.huey.entity;/** * User实体 * @version 2013-08-17 * @author huey2672 * */public class User {private String username;private String password;private String sex;private String email;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 getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public User() {}public User(String username, String password, String sex, String email) {this.username = username;this.password = password;this.sex = sex;this.email = email;}@Overridepublic int hashCode() {return username.toLowerCase().hashCode();}/** * 用户名相同即表示同一用户,且用户名不区分大小写 */@Overridepublic boolean equals(Object otherObject) {if (this == otherObject)return true;if (otherObject == null) return false;if (getClass() != otherObject.getClass()) return false;User other = (User)otherObject;return username.equalsIgnoreCase(other.getUsername());}}
6. 编写User服务,简单地模拟用户注册流程:
package com.huey.service;import java.util.ArrayList;import java.util.List;import com.huey.entity.User;/** * User服务,提供用户注册的方法 * @version 2013-08-17 * @author huey2672 * */public class UserService {private List<User> existedUsers = new ArrayList<User>();public UserService() {// 已经存在的用户existedUsers.add(new User("huey", "123", "male", "huey@163.com"));existedUsers.add(new User("sugar", "456", "female", "sugar@163.com"));}/** * 注册用户 * @param newUser 新注册的用户信息 * @return boolean表示注册成功,false表示注册失败 */public boolean doRegister(User newUser) {for (User existedUser : existedUsers) {if (newUser.equals(existedUser)) {System.out.println("该用户名已存在,不能注册!");return false;}}existedUsers.add(newUser);System.out.println("该用户名还未被注册,可以使用!");return true;}}
7. 定义处理用户请求的Action类:
package com.huey.action;import com.huey.entity.User;import com.huey.service.UserService;/** * 处理用户注册请求的Action类 * @version 2013-08-17 * @author huey2672 * * Action类只是一个普通的Java类,只需为其属性提供getter和setter方法, * 并且提供一个无参的返回类型为String的方法,以处理用户请求。 * * Action类可以实现com.opensymphony.xwork2.Action接口, * 或是继承com.opensymphony.xwork2.ActionSupport基类以简化Action的开发。 */public class RegisterAction {// user属性,并为其提供getter和setter方法private User user;private UserService userService = new UserService();public User getUser() {return user;}public void setUser(User user) {this.user = user;}/** * 注册请求的处理方法 * @returnsuccess 表示注册成功 * fail 表示注册失败 * error 表示出现错误 * @throws Exception */public String doRegister() throws Exception {if (user == null) return "error";if (userService.doRegister(user)) return "success";return "fail";}}
8. 编写Struts2配置的配置文件struts.xml,将该文件直接放在src目录下即可,当Eclipse生成、部署Web项目时,会自动将src路径下除*.java外的所有文件都复制到Web应用的WEB-INF\classes路径下。struts.xml主要作用就是配置Action和请求之间的对应关系,并配置逻辑视图与物理视图之间的映射。除此之外,struts.xml文件还有一些其他的功能,例如Bean配置、配置常量、导入其他配置文件等。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><!-- 所有的Action定义都放在package下,所有的package都要继承struts-default --><package name="register" extends="struts-default"><!-- 定义Action,并为其制定名字,对应的处理类和处理方法, 如果处理类没有指定的话,默认是ActionSupport, 如理方法没有指定的话,默认是execute方法。 --><action name="registerAction" class="com.huey.action.RegisterAction" method="doRegister"><!-- 定义逻辑视图与物理视图之间的映射 --><result name="success">welcome.jsp</result><result name="fail">register.jsp</result><result name="error">error.jsp</result></action></package></struts>
9. 编写其他视图资源welcome.jsp、error.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="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><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Welcome</title></head><body>Welcome, <s:property value="user.username" />!Your email is <s:property value="user.email" />.</body></html>
<%@ 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>Error</title></head><body>Error!</body></html>
- Struts2的简单示例
- Struts2国际化的简单示例
- 注解的Struts2简单示例
- 一个简单的Struts2的 示例
- 一个简单登录的Struts2的示例
- 复习Struts2之简单的登录示例
- Struts2中PreResultListener的简单示例
- Struts2异常处理的简单示例
- Struts2文件上传的简单示例
- Struts2文件下载的简单示例
- Struts2拦截器的简单示例
- Struts2中Ajax支持的简单示例
- Struts2 自定义类型转换器的简单示例
- Struts2登录拦截器的简单示例
- Struts2入门简单示例
- struts2简单入门示例
- struts2简单入门示例
- struts2简单入门示例
- Kendo UI开发教程(11): Kendo MVVM (二) ObservableObject 对象
- 【Spring StoredProcedure调用Oracle函数各种异常解决方法】
- firefox下无法使用ibus?
- java 技术技能点 面试3
- 《Android入门之旅》
- Struts2的简单示例
- 哥德巴赫猜想的另外一个命题
- java 技术技能点 面试4
- HDU 1799 循环多少次?
- 异常:Property 'name' not found on type java.lang.String,attribute items does not accept any
- java 技术技能点 面试5
- kehuanedu 第五章
- Oracle CASE WHEN 用法介绍
- 关于面向对象编程