之前一直用的struts1,最近换了工作接触了struts2和spring mvc,这里先介绍一下我自己搭建的struts2,网上找过一些资料,但是很多都是windows平台下面用myeclipse插件的方法,公司电脑是ubuntu,我只有最基本的eclipse,其实用不用插件都一样。就是把相关的jar包导入,配置文件写写就ok了。
废话不说了,开始将过程。
一.eclipse工具的准备
ubuntu下安装eclipse很简单,用aptitude命令就行,安装好之后,自己安装一些必要的支持web开发的插件,在help-install new software
二.新建一个web项目
比如就叫testStruts2,新建好的目录结构如下:
/testStruts2
/testStruts2/src
/testStruts2/src/sury/test/ssh2/action/LoginAction.java
/testStruts2/src/struts.xml (需要手动新建)
/testStruts2/WebContent
/testStruts2/WebContent/WEB-INF
/testStruts2/WebContent/login.jsp (需要手动新建)
/testStruts2/WebContent/welcome.jsp (需要手动新建)
/testStruts2/WebContent/WEB-INF/classes
/testStruts2/WebContent/WEB-INF/lib
/testStruts2/WebContent/WEB-INF/web.xml (需要手动新建)
基本的web项目目录结构就是这样,没有的自己手动添加一下,如果用myeclipse这些应该都是可以自动生成的。src目录下是源码,struts.xml要放在这下面,我测试过将struts.xml改名成struts-default.xml也可以,为什么我在研究,这里只要有这个文件就行。WebContent目录下面是用于部署到tomcat里的,src下面的东西都会被编译到WebContent/WEB-INF/classes这下面,/WebContent/login.jsp这个用来做登录页面,WebContent/welcome.jsp这个做登录成功的跳转页面,登录失败页面我省略了。
/WEB-INF/lib下面需要struts相关的jar包,要自己导入
freemarker-2.3.16.jar
ognl-3.0.jar
javassist-3.7.ga.jar
struts2-core-2.2.1.1.jar
xstream-1.3.1.jar
xwork-core-2.2.1.1.jar
以上包都需要
commons-pool-1.3.jar
commons-io-1.3.2.jar
commons-fileupload-1.2.1.jar
commons-dbcp-1.2.2.jar
commons-codec-1.3.jar
我的目录下都有,不知道是不是必须的,建议直接网上下载全部struts2 jar包直接扔进去
三.配置文件
1.web.xml
<?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">
<filter>
<filter-name>struts2</filter-name>
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2.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="default" namespace="/" extends="struts-default">
<action name="login" class="sury.test.ssh2.action.LoginAction" method="execute">
<result name="success">/welcome.jsp</result>
<result name="login">/login.jsp</result>
</action>
</package>
</struts>
3.login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login</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">
</head>
<body>
<s:form action="/login" method="post">
<s:label value="系统登陆"></s:label>
<s:textfield name="username" label="账号" />
<s:password name="password" label="密码" />
<s:submit value="登录" />
</s:form>
</body>
</html>
4.welcome.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'welcome.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">
</head>
<body>
欢迎${username }!
</body>
</html>
5.action
package sury.test.ssh2.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {//该类继承了ActionSupport类。这样就可以直接使用SUCCESS, LOGIN等变量和重写execute等方法
private static final long serialVersionUID = 1L;
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;
}
@Override
public String execute() throws Exception {
if("admin".equals(username) && "pwd".equals(password))//如果登录的用户名=haha并且密码=hehe,就返回SUCCESS;否则,返回LOGIN
return SUCCESS; //这里SUCCESS和LOGIN都是大写,是常量对应的字符串是小写的
return LOGIN;
}
}
四.部署测试
页面输入localhost:port/testStruts2/
五.小结
struts配置主要是action的配置,附上一个连接,讲解action比较好的
http://blog.csdn.net/ldl420783321/article/details/7546607
还有一个讲解struts2配置文件比较详细的
http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html
1.struts配置动态方法action
动态方法调用是在action的名字中使用感叹号(!)来标识要调用的方法名,其语法格
式为 actionName!methodName.action
2.默认action
如果请求一个不存在的action,结果将是HTTP404错误。在Struts2中,可以指定一个默认的action,如果一个请求没有其他的action匹配,那么默认的action将被执行。
默认的action使用default-action-ref元素来声明,如下所示:
<default-action-ref name="error"></default-action-ref>
注意:每个包中都可以有它自己默认的action,但是每一个名称空间应该只有一个默认action。如果具有相同名称空间的多个包中都声明了默认action,那么哪一个action才是默认的将无法保证。
注意:默认action只对action的访问有效。如果你访问一个非action的资源,例如/user.jsp,而该页面不存在,这时仍会看到HTTP404错误。如果想为整个Web应用程序指定默认页面,需要在web.xml文件中对HTTP404错误指定相应的错误处理页面。
3.通配符映射
随着Web应用程序的增加,所需的Action也会更多,从而导致大量的action映射,使用通配符可以减少action配置的数量,使一些具有类似行为的Action或者Action方法可以使用通用的样式来配置。
通配符即星号(*),用于匹配0个或多个字符,在配置action时,可以在action元素的name属性中使用星号(*)来匹配任意的字符。
以下是在action映射中使用通配符:
<action name="news*"
class="org.struts2.lesson05.News{1}Action">
<result name="success">/WEB-INF/News/{1}.jsp</result>
</action>
我们在action元素的name属性中使用了通配符(*),允许这个映射匹配所有以/news开始的URL,例如/newsAdd,/newsEdit,/newsDelete,但是,如果请求的是/newsEdit/add,那么这个映射就不会被匹配。
在上面,有一个特殊的记号{1},这是作为占位符使用的,它将被通配符所匹配的值替换,例如访问/newsEdit,通配符(*)匹配的部分是Edit,那么,这个值将替换{1},最终调用的类是org.struts2.lesson05.NewsEditAction,Action
执行成功后导向的结果页面是/WEB-INF/News/Edit.jsp。
在action映射和action结果中,通配符匹配的值可以用记号{N}来访问,N是从1到9的数字,指出替换的是哪一个通配符匹配的值。整个请求URL可以用记号{0}来访问。例如如下的action映射:
<action name="*_*" class="org.struts2.lesson05.{1}Action"
method="{2}">
<result>/WEB-INF/News/{0}.jsp</result>
</action>
当访问/News_delete时,name属性中的第一个”*”匹配News,第二个”*”匹配delete,class属性中使用的记号是{1},所以被News所替换,method属性中使用的记号是{2},于是被delete所替换。结果映射中使用的记号是{0},于是被整个URL替换,即News_delete所替换。整个替换后的结果是:当请求/News_delete时,框架调用NewsAction实例的delete方法对请求进行处理。执行成功后,请求被导向到/WEB-INF/News/News_delete.jsp页面。
通配符方法设置的另一种常见方式是使用后缀通配符,即将”*”放在action名字的后面,在”*”和名字前缀之间使用一个特殊字符作为分隔,常用的特殊字符是下划线(_),当然也可以使用其他字符。例如:
<action name="News_*"
class="org.struts2.lesson05.NewsAction" method="{1}">
<result>/WEB-INF/News/{0}.jsp</result>
</action>
当请求/News_delete时,调用的是NewsAction实例的delete方法,当请求/News_edit的时候,调用的是NewsAction实例的edit方法
分享到:
相关推荐
在本项目中,我们将会深入探讨如何搭建Struts2框架,并实现一个基础的应用。 首先,理解Struts2的核心概念至关重要。Struts2是一个基于Servlet的框架,它通过拦截器来处理HTTP请求,提供了灵活的控制层结构,使得...
这个“struts2框架手工搭建带jar包”资源是为初学者设计的,旨在帮助他们理解并实践Struts2框架的安装和配置过程。 在手动搭建Struts2框架时,首先需要了解其核心组件和依赖。Struts2的核心组件包括Action、Result...
本教程旨在帮助初学者从零开始搭建Struts2框架,并通过一个简单的示例来演示整个过程。以下内容将详细介绍如何创建项目、导入必要的JAR包、配置约束文件以及测试Struts2框架的基本功能。 #### 二、搭建环境 1. **...
Struts2框架搭建教程,适合初学者,一步一步的教大家怎么搭起框架,简单易懂
本文将深入探讨Struts2入门框架搭建过程中需要的核心jar文件及其作用。 1. **struts2-core-2.5.16.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action、Result、Interceptor等。它提供了解析请求、执行...
以上就是一个基础的Struts2框架搭建过程。虽然这里没有涉及Spring框架,但在实际项目中,通常会结合Spring进行更复杂的业务逻辑处理和依赖注入,以提高应用的可维护性和扩展性。Struts2与Spring的整合可以简化对象的...
本教程通过一个简单的登录实例,将引导你了解如何搭建Struts1框架环境并进行实际开发。 首先,我们需要安装和配置Java Development Kit (JDK) 和 Apache Tomcat 服务器,这是运行Struts1应用的基础。确保你的系统...
### Struts2框架的搭建与程序 #### Struts2框架简介及...综上所述,Struts2框架的搭建与配置相对简单明了,通过遵循上述步骤,开发者可以快速地搭建起一个基本的Web应用程序环境,并开始进行更为复杂的业务逻辑开发。
下面将详细介绍Struts2框架的搭建过程、基本概念以及如何使用提供的空白框架模型进行开发。 1. **Struts2框架基础** - **MVC模式**:Struts2遵循MVC设计模式,将应用分为模型、视图和控制器三个部分,分别负责业务...
struts2框架所需要的jar包,包括commons-logging-1.0.4.jar,struts2-core-2.0.11.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,xwork-2.0.4.j等,希望对大家有用!
Struts2框架搭建(源码) 一向web项目中添加struts2依赖库 二在webxml中添加Struts过滤器 三在classpath下添加strutsxml 四Loginjava 五indexjsp 六将项目部署到tomcat下 博文地址:...
最后,通过在浏览器中输入类似"http://localhost:8080/your_project_name/hello.action"的URL,我们就可以看到Struts2框架搭建成功,并显示了TestAction中execute()方法返回的欢迎信息。 总结,搭建Struts2框架主要...
在这个“J2EE的框架搭建 Struts框架的搭建”主题中,我们将深入探讨如何设置Struts2框架以及它所包含的关键组件。 首先,让我们了解一下Struts2的核心概念。Struts2的核心是Action类,它是业务逻辑的入口点。当用户...
以上就是Struts2基础框架搭建的基本流程和关键知识点。在实际开发中,你还可以深入学习更多高级特性,如动态方法调用、插件机制、文件上传下载、国际化支持等,以提高开发效率和代码质量。对于初学者来说,理解并...
Struts2框架搭建(项目源码) 一向web项目中添加struts2依赖库 二在webxml中添加Struts过滤器 三在classpath下添加strutsxml 四Loginjava 五indexjsp 六将项目部署到tomcat下 博文地址:...
#### 二、Struts2框架搭建与配置 ##### 2.1 导入Jar包 - **下载Struts2的Jar包**:首先需要下载Struts2的库文件,通常包含多个必需的Jar包,如`struts2-core-2.3.24.jar`等。 - **添加必要的第三方库**:注意避免...
这个“hibernate4+spring3+struts2搭建框架实例”旨在为初学者提供一个快速上手的环境,通过实体类与数据库交互,实现数据持久化。 Struts2是MVC(Model-View-Controller)架构模式的一个实现,主要用于控制应用...
在"struts2 框架搭建"的过程中,首先我们需要理解MVC架构的基本概念。MVC模式将应用分为三个主要部分:Model(模型)负责业务逻辑,View(视图)处理用户界面,而Controller(控制器)处理用户的请求,并协调Model和...