`
diarbao
  • 浏览: 14285 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts初步使用记录

阅读更多
Struts2
依赖包在app/struts2-blank-2.2.1.war中


Web.xml 配置
<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> 


Struts.xml配置

Struts.xml放在Src下



<?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="test" namespace="/test" extends="struts-default">
<action name="hello"
class="cn.com.leadfar.struts2.FirstAction" method="hello">
<result name="success">/first.jsp</result>
</action>
</package>
</struts>

Name—可以自定义.
Namespace-自定义 与访问地址有关
Extends  默认  缺省包命

Action里
Name 映射关系.通过name的值访问 first..class
Method 访问类的方法.可以省略.
Result 与first.class的return一样

package cn.com.leadfar;

public class FirstAction {
private String name;
private int age;
private Integer num;
public String hello(){
name="zhangsan";
age=20;

System.out.println("hello!");
return "success";
}
public String say(){
System.out.println("say```````!");
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}

}

浏览器访问路径就是
http://localhost:8080/工程名/test/hello.action
如果没写method方法.
可以这样访问
http://localhost:8080/工程名/test/hello!hello.action
所访问的方法.跟在”!”后面.


通过request/session 等传输


Struts.xml中 添加


<%@ taglib prefix="s" uri="/struts-tags" %>
可通过ServletActionContext.getRequest()/getSession()等方法来获得request/session对象,然后调
用其中的setAttribute()方法来传值。

演示各种数据的传输、展现技巧!

在Action中通过request/session来传值:
  public String detail(){
  
   //通过request
  ServletActionContext.getRe quest().setAttribute("sex", "男");
  
   //通过session

ServletActionContext.getRequest().getSession().setAttribute("address", "
北京");
  
   //通过session
  ActionContext.getContext().getSession().put("postcode",
"1234567");
  
   return "detail";
}




在JSP中取值:

  <body>
 
  <!-- 从request中取sex值 -->
request.sex = <s:property value="#request.sex"/> <br/>
request.sex = <s:property value="#request['sex']"/> <br/>
 
  <!-- 从session中取值 -->
session.address = <s:property value="#session.address"/> <br/>
session.postcode = <s:property value="#session.postcode"/> <br/>
 
  <!-- 依次搜索page/request/session/application scope取值 -->
attr.postcode=<s:property value="#attr.postcode"/> <br/>
  </body>
总结:
在Action.java中 定义变量 输入
Private String name;
ActionContext.getContext().put(“name”,”李四”);
在jsp中输出
Name: <s:property value=”#name” />

数组取值


List users = new ArrayList();
for (int i = 0; i <5; i++) {
User u =new User(); --注意 集合里new的对象.
u.setName("user"+i);
u.setAge(i+20);
users.add(u);
}
ActionContext.getContext().put("users",users);

注意第二个User 没有引号


Jsp中

<s:iterator value="#users">
//注意 iterator 后面还有一个value的值需要指定
  name:<s:property value="new cn.com.leadfar.Utils().toUp(name)"/><br>
  name:<s:property value="name"/><br>
  age:<s:property value="age"/><br>
 
  </s:iterator>

调用方法

【注意,在最新的 struts2 版本中,要想在 JSP 中通过 OGNL 表达式访问静态方法,则必须配置如下
constant:
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>


则在JSP中可以直接通过OGNL表达式来访问这些方法:
<!-- 调用静态方法 -->
<s:property value="@cn.com.leadfar.Utils@toUpperCase(username)"/>
@包路径@方法名

<!-- 利用OGNL表达式创建Utils对象,并调用它的实例方法 -->   非静态方法调用
<s:property value="new cn.com.leadfar.Utils().toLowerCase(username)"/>
new 包路径.方法名
<!-- 调用Action对象的getUtils().toLowerCase()方法 -->
<s:property value="utils.toLowerCase(username)"/>
*定义一个getUtils方法


//************************* OGNL调用静态方法和变量 *********************//
  public void testOgnl13() throws Exception{
  User user = new User();
  user.setUsername("王五");
   //调用静态变量
   //注意:out是System中的静态变量,out是PrintStream类型的一个对象
   //而println()则是out这个对象中的实例方法(不是静态方法)
   //调用静态方法,需要在类名和变量名前面加上@来调用,对于实例方法,用"."来调用
  Ognl.getValue("@System@out.println(username)", user);
}       版本:           1.0
Struts2介绍    更新日期:  2010-08-21 17:48


Confidential  ©www.leadfar.org, 2010  Page 20 of 41

 
  public void testOgnl14() throws Exception{
  User user = new User();
  user.setUsername("wangwu");
   //调用静态方法,注意使用全路径类名

Ognl.getValue("@System@out.println(@cn.com.leadfar.utils.Utils@toUpperCase(username)
user);
}
Ps;注意 方法后面要记得传参数;

.赋值方法与取值方法基本相同.
把getValue变成setValue
如果是context.在Value加 一个 context;

User user = new User();
  Ognl.getValue("setUsername('王五')", user);
Ognl.setValue(“setUsername(‘wangwu’),user);
String value = (String)Ognl.getValue("getUsername()", user);

public void testOrg04() throws Exception{
User user=new User();
Map context =new HashMap();

Ognl.setValue("name",context, user,"zhangsan");

log(user.getName());

此处的context没有调用.可以删除.




利用OGNL访问数组、集合对象

  public void testOgnl15() throws Exception{
  
  Object root = new Object();
  Map context = new HashMap();
  
   //利用OGNL创建java.util.List对象
    List list = (List)Ognl.getValue("{123,'xxx','kdjfk'}", context,
root); //String要用单引号引起来
基本形式是 “({xxx,xxx,xxx,}”,context,root);
  context.put("list", list);
  
   //利用OGNL创建数组
   int[] intarray = (int[])Ognl.getValue("new int[]{23,45,67}",
context, root);
  context.put("intarray", intarray);
  
   //利用OGNL表达式创建java.util.Map对象
  Map mapvalue =
(Map)Ognl.getValue("#{'listvalue':#list,'intvalue':#intarray}", context,
root);
  context.put("mapvalue", mapvalue);
  
   //利用OGNL表达式访问这些数组和集合对象
  Ognl.getValue("@System@out.println(#list[1])", context,root);
  Ognl.getValue("@System@out.println(#intarray[2])", context,root);
  Ognl.getValue("@System@out.println(#mapvalue.listvalue[0])",
context,root);
  Ognl.getValue("@System@out.println(#mapvalue['intvalue'][0])",
context,root);
}


访问Context里的对象 用#号
 
 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Struts2初步使用总结

    ### Struts2初步使用总结 #### 一、Struts2原理概述 **1.1 为什么要用Struts2** 在探讨为何使用Struts2之前,我们先简要回顾一下Struts2的一些基本特点: - **模块化设计**:Struts2采用模块化的架构设计,使得...

    struts2笔记_初步修改版_.

    Struts2使用拦截器(Interceptor)机制来增强Action的功能,如日志记录、权限验证等。 2. **配置文件**:Struts2的配置主要通过struts.xml或struts.properties完成,其中定义了Action的映射、结果类型、拦截器栈等...

    Struts2的视频学习代码

    "Struts2-part01"可能包含的是该系列学习的第一部分内容,可能涵盖了Struts2的基础概念、环境搭建、Action的创建和执行、OGNL的基本使用等内容。通过学习这部分代码,开发者能够初步掌握Struts2的基本操作和工作原理...

    Struts2简单实例

    通过这个简单的实例,你已经初步了解了Struts2的工作原理和基本操作。在实际开发中,你可以根据需求添加更多的Action、拦截器和结果类型,实现更复杂的业务逻辑和页面跳转。同时,Struts2还提供了丰富的插件和第三方...

    struts入门最简单例子

    Struts2是一个强大的MVC...通过这个简单的案例,初学者可以对Struts2有初步的认识,为进一步学习和掌握Struts2的高级特性和最佳实践奠定基础。在实际开发中,你还可以探索更多的内容,如文件上传、国际化、异常处理等。

    struts2图书馆管理系统

    总的来说,这个"struts2图书馆管理系统"项目为初学者提供了一个了解和实践Struts2框架的机会,尽管它可能存在一些功能上的局限,但通过这个项目,学习者可以深入理解MVC架构,掌握Struts2的核心概念,并初步接触Web...

    struts2框架2016版资料day01

    这个"struts2框架2016版资料day01"涵盖了Struts2的基础知识,包括框架的基本架构、核心概念和初步配置。传智播客作为知名的IT教育机构,其课程内容通常严谨且实用,适合初学者快速入门。 1. **Struts2框架概述**:...

    Struts2漏洞利用工具Devmode版

    1. **环境准备**:在使用工具之前,确保你有权限访问目标系统,并了解其运行的Struts2版本,因为不同版本可能存在不同的漏洞。 2. **漏洞扫描**:运行工具,它会发送一系列预设的请求,针对已知的Struts2漏洞进行...

    Servlet简单模拟Struts2

    为了达到类似Struts2的效果,我们可以创建一个Servlet过滤器(Filter),在`doFilter`方法内进行请求的初步处理和转发。过滤器可以注册到web.xml文件中,对特定URL路径或所有请求进行拦截。 2. **解析自定义XML数据...

    开发基于Struts Spring Hibernate Ajax的网上信息发布平台(Struts Hibernate Spring Ajax)--Chapter1

    在这个过程中,你将学习到如何使用Struts的拦截器来添加全局行为,如登录验证;如何利用Spring的AOP进行权限控制;以及如何利用Ajax和JSON进行前后端通信。这将为后续章节中更复杂的功能开发打下坚实的基础。 总的...

    struts2完整的Hello Word例子。

    Struts2是一个强大的MVC(Model-View-Controller...通过这个Hello World示例,开发者可以初步了解Struts2的基本架构和工作流程,为后续深入学习和应用打下基础。对于初学者,理解并实践这些步骤是掌握Struts2的第一步。

    基于Struts2框架的信息发布系统的设计与初步实现.docx

    本篇文档将深入探讨Struts2框架的设计与初步实现,从其起源、发展,到基本原理和配置。 **一、Struts2的起源与发展** Struts2的诞生源于Web技术的演进。早期的静态HTML页面已不能满足用户交互的需求,因此出现了...

    javaweb Struts2 框架搭建方法与空框架模型

    - 学习使用Struts2的拦截器(Interceptor)进行日志记录、权限控制等操作。 - 熟悉OGNL(Object-Graph Navigation Language)表达式,用于在Action和视图之间传递数据。 - 探索Struts2的插件,如Struts2-dojo-...

    ssh框架用struts2 hibernate实现图片的上传源码

    本项目涉及的核心知识点是使用Struts2处理表单提交,Hibernate进行数据持久化,以及图片上传的相关技术。下面将详细介绍这些内容。 1. **Struts2**:Struts2是一个基于MVC设计模式的Web应用框架,它通过拦截器模型...

    Struts2简单开发环境的搭建(初级)

    对于Struts2的初步配置,我们需要一系列核心库和依赖库。在你提供的"最少依赖jar文件"中,这些jar可能包括: 1. **struts2-core.jar**: Struts2的核心框架文件,包含了所有主要的控制器和框架组件。 2. **xwork-...

    struts2笔记 Word文档

    3. **拦截器**:拦截器是Struts2的一个重要特点,它们按照预定义的顺序在Action执行前后执行,可以用来实现如日志记录、权限检查、事务管理等功能。开发者可以根据需求自定义拦截器。 4. **结果类型**:Struts2支持...

    sunxin-Struts2试读

    本试读资料可能包含了Struts2的基础概念、核心组件以及实际应用的初步介绍。 在`ch01.pdf`中,可能会详细讲解Struts2的基础知识,包括它的历史背景、为什么选择Struts2,以及Struts2框架相较于其他MVC框架的优势。...

    struts2的例子

    7. **初步上手**:了解如何搭建Struts2的开发环境,创建第一个简单的Hello World程序,理解MVC架构的基本原理,以及Struts2的核心概念,如Action、Result、DispatcherServlet等,这是初学者入门的必经之路。...

    struts2权威指南 1-3

    - 配置Struts2:如何在项目中添加Struts2库,配置web.xml文件,以及struts.xml配置文件的初步了解。 - 创建第一个Struts2应用:通过一个简单的示例,展示如何创建一个Hello World应用,演示Action、JSP页面和配置...

Global site tag (gtag.js) - Google Analytics