学习日志——2019/08/27

Struts2

在这里插入图片描述15773.png)

Struts2的常量配置

在Struts2的框架中,提供了非常多的常量:(在default.properties)

  • struts.i18n.encoding=UTF-8 ----Struts2中所有的post请求的中文乱码不用处理。
  • struts.action.extension=action, ----Struts2请求的默认的扩展名。默认扩展名是.action或者什么都不写。
    在Struts2中修改一些常量的值:
  • 修改常量的值,可以有三个位置进行修正:
    • struts.xml中进行修改
<constant name="struts.action.extension" value="action"/>
  • struts.properties中进行修改
struts.action.extension="action"
  • web.xml中进行修改
	<init-param> 
  		<param-name>struts.action.extension</param-name> 
  		<param-value>xyz</param-value>
	</init-param> 
分模块开发的配置
  • include的配置

	<include file="/Struts2/src/strutsdemo/struts_demo.xml"/>	

Action的访问

Action的写法(三种)
  • Action类是POJO的类
package struts2test2;
/**
 * Action的编写方式:Action是一个POJO类
 * @author Administrator
 *
 */
public class ActionDemo1 {
	public String execute() {
		System.out.println("ActionDemo1执行了。。。");
		return null;
		
	}
}

  • Action类实现一个Action的接口
package struts2test2;

import com.opensymphony.xwork2.Action;

/**
 * Action的编写方式二,实现一个Action的接口
 * @author Administrator
 *
 */
public class ActionDemo2 implements Action{

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		System.out.println("actionDemo2执行了。。。");
		return null;
	}
	
}

实现接口的这种方式,提供了五个常量(5个逻辑视图的名称)
* SUCCESS :成功了
* ERROR :失败
* LOGIN :登入出错页面
* INPUT :表单校验的时候出错
* NONE :不跳转

  • Action类继承ActionSupport类
package struts2test2;

import com.opensymphony.xwork2.ActionSupport;

/**
 * Action的编写方式三:Action继承ActionSupport类
 * @author Administrator
 *
 */
public class ActionDemo3 extends ActionSupport{
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		System.out.println("ActionDemo3执行了。。。");
		return NONE;
	}
}

ActionSupport中提供了数据校验、国际化等一系列的方法

Action的访问

通过method设置
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="${ pageContext.request.contextPath }/userFind.action">查询用户</a><br/>
<a href="${ pageContext.request.contextPath }/userUpdate.action">修改用户</a><br/>
<a href="${ pageContext.request.contextPath }/userDelete.action">删除用户</a><br/>
<a href="${ pageContext.request.contextPath }/userSave.action">保存用户</a><br/>


</body>
</html>
通过通配符的方式进行配置(*****)
<h3>通过通配符的方式</h3>
<a href="${ pageContext.request.contextPath }/product_find.action">查询商品</a><br/>
<a href="${ pageContext.request.contextPath }/product_update.action">修改商品</a><br/>
<a href="${ pageContext.request.contextPath }/product_delete.action">删除商品</a><br/>
<a href="${ pageContext.request.contextPath }/product_save.action">保存商品</a><br/>
动态方法访问
<h3>通过动态方法访问的方式</h3>
<a href="${ pageContext.request.contextPath }/customer!find.action">查询客户</a><br/>
<a href="${ pageContext.request.contextPath }/customer!update.action">修改客户</a><br/>
<a href="${ pageContext.request.contextPath }/customer!delete.action">删除客户</a><br/>
<a href="${ pageContext.request.contextPath }/customer!save.action">保存客户</a><br/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ceph是一个分布式存储系统,包括多个组件,其中包括Librbd块存储库。在Ceph中,Librbd提供了一种将RBD(块设备)映射到客户端的方法,并使客户端能够读写这些设备。在本文中,我们将分析Librbd块存储库的源代码以及RBD的读写过程。 1. Librbd源码分析 Librbd块存储库的源代码位于src/librbd目录下。其中,包括librbd.cc、ImageCtx.cc、ImageWatcher.cc、Journal.cc等多个源代码文件。这些源代码文件组成了Librbd块存储库的核心。 其中,librbd.cc是Librbd块存储库的主要源代码文件。在这个文件中,包括了Librbd的初始化、映射、卸载等方法。ImageCtx.cc则是Image上下文,用于管理Image的状态、锁定、映射等信息。ImageWatcher.cc用于监控Image的状态变化,Journal.cc则是Librbd的Journal日志管理。 2. RBD读写流程源码分析 在Ceph中,RBD由client和server两个部分组成。client在客户端上运行,提供了将RBD映射到客户端的方法。server在存储集群中运行,提供了RBD的存储和管理。 RBD的读写流程如下: 1)客户端向Ceph Monitor请求RBD映射信息,Monitor返回Image ID和Image特性; 2)客户端向Ceph OSD请求RBD数据块,OSD返回数据块内容; 3)客户端将数据写入或读取到本地块设备; 4)客户端向Ceph OSD写入或读取数据块,OSD返回操作结果; 5)客户端向Ceph Monitor请求解除RBD映射,Monitor返回解除结果。 在上述过程中,涉及到的源代码文件有:librbd.cc、ImageCtx.cc、ImageWatcher.cc、Journal.cc等。 总结 Librbd块存储库和RBD读写流程是Ceph存储系统的核心组件之一,通过分析源代码可以更加深入地了解Ceph存储系统的实现原理。同时,对于开发者来说,也有助于在Ceph存储系统上构建更加高效、稳定的存储应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值