struts2启程之类型转换
类型转换要考虑两点:从客户端向服务器、从服务器向客户端。
1、从客户端向服务器转换,肯定是String类型转换成javaBean类型
2、从服务器端向客户端转换,肯定是javaBean类型转换成String类型
所以,这个转换类就需要考虑这两点
类型转换的流程:
通过JSP页面将其中的一个元素值转换成javaBean值,在页面输出时,将取得的javaBean自动转换成了String类型,并输出。
要点文件:转换类、配置文件-维系转换类与Action类之间的纽带
一、写转换类的注意点:
1、继承ognl.DefaultTypeConverter类
2、重写convertValue(Map context, Object value, Class toType)方法
示例代码:
java 代码
- package com.test.convert;
-
- import java.util.Map;
-
- import com.test.bean.Point;
-
- import ognl.DefaultTypeConverter;
-
- public class PointConverter extends DefaultTypeConverter {
-
- @Override
- public Object convertValue(Map context, Object value, Class toType) {
- if(Point.class == toType)
- {
- Point point = new Point();
- String[] str = (String[]) value;
- String[] points = str[0].split(",");
-
- int x = Integer.parseInt(points[0]);
- int y = Integer.parseInt(points[1]);
-
- point.setX(x);
- point.setY(y);
-
- return point;
- }
- if(String.class == toType)
- {
- Point point = (Point) value;
-
- String str = "[x=" + point.getX() + " , y=" + point.getY() + "]";
- return str;
- }
-
- return null;
- }
-
- }
二、写配置文件的注意点:
1、 配置文件名的位置:必须与应用这个转换类的Action类在同一个包中
2、 配置文件名称命名:必须是要应用这个转换类的Action类的名字加"-conversion.properties"
3、配置文件内容:"="号的左边是Action类中要转换的Bean所对应的属性名字,"="号的右边是转换类的全称(包名加类名)
示例:
pointAction-conversion.properties
- point=com.test.convert.PointConverter
java 代码
- package com.test.bean;
-
- public class Point {
- private int x;
- private int y;
- public int getX() {
- return x;
- }
- public void setX(int x) {
- this.x = x;
- }
- public int getY() {
- return y;
- }
- public void setY(int y) {
- this.y = y;
- }
-
- }
java 代码
- package com.test.action;
-
- import java.util.Date;
-
- import com.opensymphony.xwork2.ActionSupport;
- import com.test.bean.Point;
-
- public class PointAction extends ActionSupport {
- private Point point;
- private String username;
- private int age;
- private Date date;
- public Point getPoint() {
- return point;
- }
- public void setPoint(Point point) {
- this.point = point;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public Date getDate() {
- return date;
- }
- public void setDate(Date date) {
- this.date = date;
- }
-
- @Override
- public String execute() throws Exception {
- return SUCCESS;
- }
-
-
- }
java 代码
- <!---->"1.0" encoding="UTF-8" ?>
- <!---->
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts></struts>
-
- <package name="wjl_struts" extends="struts-default">
-
- "login" class="com.test.action.LoginAction">
- "input">/login.jsp
- "success">/result.jsp
- "failed">/login.jsp
-
-
- "pointConvert" class="com.test.action.PointAction">
- "success">/output.jsp
-
-
- package>
-
-
xml 代码
- <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
-
- <!---->>
- <html>
- <head>
- <base href="<!---->">
-
- <title>My JSP 'input.jsp' starting pagetitle>
-
- <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="pointConvert">
- <s:textfield name="point" label="Point">s:textfield>
- <s:textfield name="username" label="username">s:textfield>
- <s:textfield name="age" label="age">s:textfield>
- <s:textfield name="date" label="date">s:textfield>
- <s:submit label="submit">s:submit>
- s:form>
- body>
- html>
xml 代码
- <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
-
- <!---->>
- <html>
- <head>
- <base href="<!---->">
-
- <title>My JSP 'output.jsp' starting pagetitle>
-
- <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>
- Point:<s:property value="point"/><br/>
- Username:<s:property value="username"/><br/>
- Age:<s:property value="age"/><br/>
- Date:<s:property value="date"/><br/>
- body>
- html>
分享到:
相关推荐
3. 类加载器问题:Struts2使用了自定义的类加载机制,这为攻击者提供了利用的机会。通过特定的请求,攻击者可能可以加载并执行恶意类,进一步执行RCE。 4. 漏洞利用库:攻击者通常会利用已知的Struts2漏洞库,如CVE...
Struts2是一个非常流行的Java MVC框架,用于构建企业级Web应用程序。然而,它在历史上曾出现过多个安全漏洞,其中最著名的就是“Struts2漏洞”。这个标题和描述提到的"struts2-scan"是一种工具,专门用来检测Struts2...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...
Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
3. 高效性:Struts2 框架提供了一个高效的架构,可以快速地处理用户的请求。 Struts2 框架的应用场景 Struts2 框架的应用场景包括: 1. 企业级应用程序:Struts2 框架适用于开发大型的企业级应用程序。 2. 电子...
3. **拦截器(Interceptor)**:Struts2的核心组件之一,可以理解为对请求和响应进行预处理和后处理的中间层。拦截器链是Struts2的一大特色,允许开发者自定义拦截器,实现如权限验证、日志记录、事务管理等功能。 4....
struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...
Struts2 最新漏洞 S2-016、S2-017 修补方案 Struts2 是一个基于 Java 的 Web 应用程序框架,由 Apache 软件基金会维护。最近,Struts2 发生了两个严重的漏洞,分别是 S2-016 和 S2-017,这两个漏洞可能会导致攻击者...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...
### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...
### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...
3. **依赖的第三方库**:Struts2依赖于其他的一些库,如ognl(Object-Graph Navigation Language)、freemarker(模板引擎)等。 4. **Spring整合包**:如果项目中使用了Spring框架,可能还需要struts2-spring-...
3. 创建Struts2的配置文件struts.xml,定义Action、包(package)、namespace等。 **三、Namespace** Namespace是Struts2中用于组织Action的一种方式,可以看作是Action的命名空间。它有助于避免Action名称冲突,同时...
该工具的打开路径为:\Struts2VulsTools-2.3.20190927\Test\bin\Release\Text.exe 2019-09-25: 优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建...
3. `ognl.jar`:Object-Graph Navigation Language (OGNL)是Struts2中使用的表达式语言,用于在视图层和模型层之间传递数据。 4. `freemarker.jar`和`velocity.jar`:这两种是模板引擎,用于生成动态HTML页面。...
Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...
3. **拦截器库**:`struts2-convention-plugin.jar`和`struts2-interceptor-plugin.jar`提供了多种内置拦截器,如Params拦截器处理参数绑定,Validation拦截器负责验证,以及Tiles拦截器用于页面布局。 4. **结果...
3. **配置web.xml**:在`web.xml`中配置Struts2的核心过滤器`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。同时,确保配置了正确的Context路径和其他必要配置。 4. **配置struts.xml*...
struts2环境搭建+struts2 新闻发布系统+struts2 留言板 struts2环境搭建:基础框架搭建,简单易上手,适合新手,比你看书强多了,实践源于理论而高于理论,贵在实践 朋友。 struts2 新闻发布系统:struts2+jsp 功能不...