Struts2简介:

    Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。

Struts 2 目录结构:
    apps目录:Struts2示例应用程序
    docs目录:Struts2指南、向导、API文档
    lib目录:Struts 2的发行包及其依赖包
    src目录:Struts 2项目源代码

使用Struts 2 开发程序的基本步骤

--手动添加Struts支持

    1.第一步:加载Struts2 类库,既是添加jar包

        1. commons-logging-1.1.x.jar ASF出品的日志包,struts2使用这个日志包来支持JDK和Log4j的日志记录。
        2. freemarker-2.3.x.jar 表现层框架,定义了struts2的可视组件主题,struts2的UI标签的模版,使用FreeMark编写
        3. ognl-2.6.x.jar 对象图导航语言(Object Graphic Navigation Language),struts2框架通过其读写对象属性,一种功能强大的表达式语言
        4. struts2-core-2.x.x.jar struts2的核心类库
        5. xwork.jar webwork的核心库,struts2在其上构建
        6. commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件
        7.struts2-dojo-plugin-2.3.4     为struts所提供的一些控件例如:日历

     2.第二步:配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 配置Struts2核心配置文件 -->
<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>
<!-- 注意:
1.filter-class中类的地址可在:
(1)可建一个类,在类中点出来。
(2)或直接在Libraries 下 struts2-dojo-plugin-2.1.8.jar下找到右键copy类的路径,但必须把后缀点class删掉。
2.url-pattern中的值:
(1)/*代表所有页面都会经过此过滤器。
(2)或*.action或*.do后缀的页面都会经过此过滤器。 -->
</web-app>

    

    3.第三步:开发视图层页面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>登录页面</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>
<h3>登录页面</h3>
<form action="userAction" method="post" >
用户名:<input type="text" name="uname"/><br />
密码: <input type="password" name="upassword" ><br />
<input type="submit" value="提交登录" >
</form>
</body>
</html>

    4.第四步:开发控制层com.struts包下或com.action包

package com.struts;
/**
* 控制层
* @author asus
*
*/
public class UserAction { /**
* 此属性用来接收form表单提交过来的值,属性名与form表单中name属性名一致
* 必须生成get,set方法 */
private String uname;
private String upassword; public String execute(){
if(uname!=null && uname.equals("admin") && upassword.equals("123")){
//进入则代表账号密码输入正确
return "success";
}
return "error";
}
/** JavaBean */
public String getUname() {
return uname;
} public void setUname(String uname) {
this.uname = uname;
} public String getUpassword() {
return upassword;
} public void setUpassword(String upassword) {
this.upassword = upassword;
} }

    5.第五步:配置Struts 2配置文件src下创建(struts.xml)需要选TDT struts-2.1.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
<!-- 配置Struts2配置文件 -->
<struts>
<!--
package:包
name:包名,唯一的,必选项
namespace:命名空间,唯一的,相当于房间号。可选项,省略情况下是“/”
extends:继承
extends=“struts-default”:struts2框架底层提供的核心包struts2-core-2.3.3.jar下的struts-default.xml文件
为什么要继承这个struts-default.xml文件
因为struts框架底层提供的struts-default.xml声明了所有的拦截器和拦截器栈。
我们知道struts2框架运行时执行struts-default.xml中的拦截器栈完成必要功能。
如果不继承struts-default.xml文件,就没有办法使用struts2提供的所有拦截器。 -->
<package name="struts2" namespace="/" extends="struts-default" >
<!--
action:
name:对应页面请求链接的后面半部分
class:对应要执行的类的完整路径
-->
<action name="userAction" class="com.struts.UserAction" >
<!--
result:结果类型
name:对应的是执行的类的方法的返回值
后半部分文本内容:转向的页面
-->
<result name="success" >/loginSuccess.jsp</result><!-- 账户密码正确跳转此页面 -->
<result name="error" >/login.jsp</result><!-- 账户密码错误跳转登录页面重新输入 -->
</action>
</package>
</struts>

    6.第六步:部署、运行项目

--自动添加Struts支持

    --MyEclipse自动添加Struts 支持

      右键项目-->MyEclipse-->Add Struts Capabilities

    注意:Hibernate+Struts2时,若两个支持都是自动生成的则会有一个  antlr-2.7.2.jar 包冲突。必须去掉一个。一般是移掉Struts2的。

    附加移除操作图:

      

使用对象接收from表的提交的值

属性设值的方式
(1):简单:在Action设置属性,生成SET与GET方法。

参数的名称与属性的名称一致。

(2):Action中设置Bean的属性

Bean必须生成SET、GET方法。Bean不可以实例化。
Bean中必须要有一个默认的空参数的构造方法。

参数的名称 = bean的名称.bean中属性的名称。

Struts 2访问Servlet API

/** Struts 2访问Servlet API
*/
/**1.与Servlet API解耦的访问方式*/
//上下文对象
ActionContext context = ActionContext.getContext();
//request范围
Map<String, Object> request=(Map<String, Object>) context.get("request");
request.put("num1", 1);
//session范围
Map<String, Object> session = context.getSession();
session.put("num2", 2);
//application范围
Map<String, Object> application = context.getApplication();
application.put("num3", 3);
/** 2.与Servlet API耦合的访问方式*/ //request范围
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("num1", 4);
//session范围
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("num2", 5);
//application范围
ServletContext application = ServletActionContext.getServletContext();
application.setAttribute("num3", 6);

Struts 2初体验的更多相关文章

  1. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  2. Node.js 网页瘸腿爬虫初体验

    延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...

  3. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  4. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  5. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  6. 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...

  7. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

  8. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

  9. 百度EChart3初体验

    由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详 ...

随机推荐

  1. python+django+mysql配置步骤

    安装python 详细步骤见:地址 1. 从 http://www.python.org/download/ 下载最新的python版本 (我用的是python2.6, 当时最稳定的) 2. 然后一路 ...

  2. C#-流、存储

    流输入输出 VS提供的类库,可方便数据的转移操作,一部分是文件和目录方面 file类 用静态方法,   fileinfo类 用实例方法   dictionary类 用静态方法   dictionary ...

  3. day06(Collection,List,ArrayList,LinkedList,iterator迭代器,增强for)

    Collection   接口    方法实现 boolean  add(Object o);//添加 boolean  remove(Object o);//移除 修改方法   让实现类自己去实现修 ...

  4. [转自知乎] 从github上下载单个文件夹

    原文地址: 如何从 GitHub 上下载单个文件夹?  注意:如果是在公司网络环境的话需要配置可以访问外网的代理,否则 svn checkout 时会出错.

  5. underscore functions

    // 创建一个用于设置prototype的公共函数对象 var ctor = function() {}; 1..bind(function, object, [*arguments]) :绑定fun ...

  6. 大猪蹄子队 Scrum meeting 合集

    大猪蹄子队 Scrum meeting 合集 18-10-29 第一天 http://note.youdao.com/noteshare?id=79ce5a89f85995ef68deae14e538 ...

  7. 【转】如何使用BehaviorSDK

    原文地址:http://blogs.msdn.com/b/windows8devsupport/archive/2014/10/24/behaviorsdk.aspx 前言 在开发过程中,程序员一般通 ...

  8. 理解load averages

      今天在客户的生产环境中遇到了网络丢包的问题,但是查看我方部署smokeping监控发现对同一条线路监控,我方监控显示正常,判断丢包是由客户服务器负载过高导致,原因及排查思路如下: 使用uptime ...

  9. 微信Web APP应用

    微信Web APP即微信公众账号,对web APP的提供者来说这是一个门槛极低,容易到达数亿真实用户且确保用户黏性的分发平台;对用户来说,这是一种前所未有及其简单的应用使用方式;对腾讯来 说,将形成微 ...

  10. 实例化MD5CryptoServiceProvider报错:此实现不是 Windows 平台 FIPS 验证的加密算法的一部分

    System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS valid ...