struts2开发简单实例
1.引入struts2相应的jar包,可以到网上下载,大把大把的。
2.配置struts.xml 要放在src目录下 如下:
<?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>
<!-- Struts 2 的Action必须放在包空间下 -->
<package name="strutsqs" extends="struts-default">
<!-- 定义action的名字以及action的实现类 -->
<action name="LoginAciton" class="com.gjy.struts2.loginAction.LoginAction">
<!-- 定义action的处理结果result,result有两个属性,其中name指定返回名称,tyle指定返回的类型 -->
<!-- 处理Login错误时返回/error.jsp -->
<result name="error">/error.jsp</result>
<!-- 处理Lognin正确时/suc.jsp -->
<result name="suc">/suc.jsp</result>
</action>
</package>
</struts>
3.配置web.xml struts2与struts1不同,struts2是通过一系列的过滤器来组成过滤链来对用户的请求作处理
如下:
<?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">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<!--定义struts2的核心Filter的实现类 -->
<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>
3.写Action,struts2的acction不继承其它类,是一个普通的java类,它不与serverlet API 相偶合,降低了代码的可维护性,使得代码
更加容易测试。
如下:
(1).自定义一个action接口
package com.gjy.struts2.interfaceAction;
public interface Action {
public static String SUCCESS="suc";
public static String ERROR="error";
public String execute()throws Exception;
}
(2).写一个loginAction,实现action接口,此action的业务逻辑没有与LoginAction分开,可自行实现分开
package com.gjy.struts2.loginAction;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.gjy.struts2.entity.Book;
import com.gjy.struts2.interfaceAction.Action;
import com.opensymphony.xwork2.ActionContext;
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;
}
//处理用护请求的execute方法
public String execute() throws Exception
{
if (getUserName().equals("gongjiayun")
&& getPassWord().equals("hehe") )
{
//通过ActionContext访问Web对象的Session对象,此处的ActionContext返回的是一个Map
//虽然struts2的action中没有HttpSession对象,但我们也可以通过通过ActionContext访问Web对象的Session对象
Map sessionMap = ActionContext.getContext().getSession();
sessionMap.put("user" , getUserName());
Book book = new Book();
Object books[]= book.getBook();
List<Object[]> bookList = new ArrayList<Object[]>();
bookList.add(books);
sessionMap.put("book", bookList);
return SUCCESS;
}
else
{
return ERROR;
}
}
}
(3).写一个实体类Book
package com.gjy.struts2.entity;
public class Book {
private static Object book[]=new Object[4];
public Book(){
book[0] = "《java编程思想》";
book[1] = "《Struts2权威指南》";
book[2] = "《精通Oracle》";
book[3] = "《我的Flex我精通》";
}
public Object[] getBook(){
return book;
}
}
(4).写一个登陆页面login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<p>用户登陆</p>
<form action="LoginAciton.action">
username:<input type="text" id="userName" name="userName"/><br/><br/>
password:<input type="password" id="passWord" name="PassWord"/><br/><br/>
<input type="submit" value="submit">
</form>
</body>
</html>
(5).写一个显示页面suc.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'suc.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<center><div>
WelCome,${sessionScope.user},you can do anything! Long Long ago,I have a dream !<br>
<table border="1px" bordercolor="blue" id="tbColor">
<caption>作者gjy的图书</caption>
<c:forEach var="books" items="${book}" >
<tr >
<td>书名:</td>
<td>${books[0] }</td>
</tr>
<tr>
<td>书名:</td>
<td>${books[1] }</td>
</tr>
<tr>
<td>书名:</td>
<td>${books[2] }</td>
</tr>
<tr>
<td>书名:</td>
<td>${books[3] }</td>
</tr>
</c:forEach>
</table>
</div></center>
</body>
</html>
(6).写一个error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'suc.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
error,you can do nothing! <br>
</body>
</html>
分享到:
相关推荐
通过学习和实践这个“struts2简单例子”,开发者可以逐步掌握Struts2的基本用法,为更复杂的Web应用开发打下坚实基础。记得不断探索Struts2的高级特性,如OGNL表达式、插件扩展等,以提升应用的灵活性和可维护性。
总结,"struts2简单实例"展示了如何使用Struts2框架构建一个简单的学生信息查询功能,涵盖了配置文件、Action实现、数据传输以及视图展示等多个方面,是学习和理解Struts2工作原理的好例子。通过这个实例,开发者...
这个“struts2的简单实例”将带你了解如何在实际项目中使用Struts2。 首先,我们需要理解Struts2的核心概念: 1. **Action类**:这是业务逻辑的载体,负责处理来自用户的请求。Action类通常继承自`...
这个"struts2的简单例子"是一个适合初学者理解并实践Struts2框架的基础教程。 首先,我们需要了解Struts2的核心概念: 1. **Action类**:在Struts2中,Action类是业务逻辑的载体,它是控制器层的主要组成部分。一...
通过这个简单的实例,你已经初步了解了Struts2的工作原理和基本操作。在实际开发中,你可以根据需求添加更多的Action、拦截器和结果类型,实现更复杂的业务逻辑和页面跳转。同时,Struts2还提供了丰富的插件和第三方...
在这个"Struts2+rest简单实例"中,开发者创建了一个小型的示例应用,目的是帮助初学者快速理解如何在Struts2框架中集成RESTful服务。以下是这个实例中可能涉及的关键知识点: 1. **Struts2框架基础**:Struts2的...
通过学习这个简单的Struts2例子,你可以了解到如何在实际项目中应用Struts2的类型转换和验证功能,这对于提高代码质量和用户体验都有着重要的作用。同时,这也是深入理解Struts2框架、提升Java Web开发技能的好途径...
总之,"struts2+rest简单实例"是一个学习如何在Struts2框架中实现RESTful API的绝佳资源。通过实践这个示例,开发者可以更好地理解这两者的结合,以及如何构建一个符合REST原则的Java Web应用程序。
实践这个例子,你可以了解到如何设置一个简单的Struts2应用,从而为进一步学习更复杂的特性如国际化、文件上传、异常处理等奠定基础。 总之,Struts2是一个强大的MVC框架,它的核心在于`struts.xml`配置文件,通过...
通过以上介绍,我们可以看出Struts2标签库为Web开发带来了很多便利。在实际项目中,开发者可以根据需要选择合适的标签来构建用户界面,提高开发效率。在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签...
标签中的“struts2例子”和“sturts2demo”表明这是一个演示如何使用Struts2开发Web应用的实例。通过运行这个例子,开发者可以学习到如何创建Action、如何配置Struts2、如何实现数据绑定、以及如何利用Struts2的拦截...
本实例将带你深入理解Struts2验证框架的使用,以及在实际操作中可能遇到的问题和解决方案。 首先,Struts2的验证框架主要基于两个组件:`Validation`和`Validator`。`Validation`是Action类的注解,而`Validator`则...
这个"struts2的一个简单的例子"旨在帮助初学者理解并掌握Struts2的核心概念和工作原理。以下是对这个例子的详细解释: 一、Struts2框架概述 Struts2是基于MVC(Model-View-Controller)设计模式的开源框架,它继承...
这个例子简单地演示了如何设置Struts2环境,创建第一个Action并显示简单的输出。 通过以上这些实例,你可以逐步学习和掌握Struts2的配置、Action、拦截器、结果类型、OGNL表达式、数据绑定、国际化、安全等方面的...
总之,这个简单的Struts2登录例子涵盖了Struts2的核心概念,包括Action、配置文件、视图页面、数据验证以及使用MyEclipse进行开发。通过学习这个例子,开发者可以更好地理解Struts2框架的运作机制,并逐步掌握Java ...
本实例是一个基础的Struts2应用,展示了如何创建一个简单的Action,配置Action映射,以及生成相应的视图。随着你对Struts2的深入学习,你会了解到更多高级特性,如动态方法调用、国际化、主题和模板、拦截器栈等。...
在这个"使用Maven构建Struts2最简单例子"中,我们将探讨如何结合这两个工具来创建一个基础的J2EE应用。 首先,让我们深入了解Maven。Maven使用一个称为POM(Project Object Model)的XML文件来定义项目的配置信息,...
在MyEclipse这个集成开发环境中,Struts2提供了很好的支持,使得开发者可以更加高效地进行Web应用的开发。下面,我们将详细探讨如何在MyEclipse中使用Struts2实现一个简单的登录功能。 首先,我们需要创建一个新的...
Struts2是一个强大的Java web...理解并掌握上述知识点,你就能构建起对Struts2框架的基本认知,从而进一步开发更复杂的企业级应用。通过实际操作jamesby-struts2-helloworld项目,你可以亲手实践这些概念,加深理解。