文档章节

二、struts2结果页面配置,获取表单数据,数据封装

swift_hua
 swift_hua
发布于 2017/07/23 23:18
字数 3075
阅读 2
收藏 0
点赞 0
评论 0

结果页面配置
全局结果页面
1 result标签配置action方法的返回值到不同的路径里面

2 创建两个action,执行默认的方法execute方法,让两个action的方法都返回success,返回success之后,配置到同一个页面里面
(1)如果多个action,方法里面返回值相同的,到页面也是相同的,这个时候可以使用全局结果页面配置
 
(2)在package标签里面配置
 
局部结果页面
 
(1)配置全局页面,也配置了局部页面,最终以局部配置为准

 

Result标签的type属性
1 result标签里面除了name属性之外,还有一个属性 type属性
(1)type属性:如何到路径里面(转发还是重定向)

2 type属性值
(1)默认值,做转发操作,值是 dispatcher
 

(2)做重定向操作,值是 redirect
 

(2)上面两个值dispatcher、redirect,这两个值一般针对到页面中配置,
配置到其他的action里面
- chain:转发到action,一般不用,缓存问题
 
- redirectAction:重定向到action

Action获取表单提交数据
1 之前web阶段,提交表单到servlet里面,在servlet里面使用request对象里面的方法获取,getParameter,getParameterMap

2 提交表单到action,但是action没有request对象,不能直接使用request对象

3 action获取表单提交数据主要三种方式
(1)使用ActionContext类
(2)使用ServletActionContext类
(3)使用接口注入方式

使用ActionContext类获取
 
(1)因为方法不是静态的方法,需要创建ActionContext类的对象
(2)这个ActionContext类对象不是new出来的,

1 具体演示
(1)创建表单,提交表单到action里面
(2)在action使用ActionContext获取数据

使用ServletActionContext类获取
 
(1)调用类里面静态方法,得到request对象

使用接口注入(了解)
1 让action实现接口,为了得到request对象

 

在action操作域对象
1 request、session、servletContext域对象

2 使用ServletActionContext类操作

 

Struts2封装获取表单数据方式
原始方式获取表单封装到实体类对象

属性封装(会用)
1 直接把表单提交属性封装到action的属性里面

2 实现步骤
(1)在action成员变量位置定义变量
- 变量名称和表单输入项的name属性值一样
(2)生成变量的set方法(把set和get方法都写出来)

3 使用属性封装获取表单数据到属性里面,不能把数据直接封装到实体类对象里面

模型驱动封装(重点)
1 使用模型驱动方式,可以直接把表单数据封装到实体类对象里面

2 实现步骤
(1)action实现接口 ModelDriven
 
(2)实现接口里面的方法 getModel方法
- 把创建对象返回

(3)在action里面创建实体类对象
 
//前提要求:表单输入项name属性值与实体类属性名称一样

3 使用模型驱动和属性封装注意问题:
(1)在一个action中,获取表单数据可以属性封装,使用模型驱动封装,
不能同时使用属性封装和模型驱动封装获取同一个表单数据
如果同时使用,之后执行模型驱动

表达式封装(会用)
1 实现过程
(1)使用表达式封装可以把表单数据封装到实体类对象里面

第一步 在action里面声明实体类
第二步 生成实体类变量的set和get方法
 
第三步 在表单输入项的name属性值里面写表达式形式
 
2 把表达式封装归类到属性封装里面

比较表达式封装和模型驱动封装
1 使用表达式封装和模型驱动封装都可以把数据封装到实体类对象里面

2 不同点:
(1)使用模型驱动只能把数据封装到一个实体类对象里面
- 在一个action里面不能使用模型驱动把数据封装到不同的实体类对象里面

(2)使用表达式封装可以把数据封装到不同的实体类对象里面
 


 
封装到集合里面
封装数据到List集合
第一步 在action声明List
第二步 生成list变量的set和get方法
 
第三步 在表单输入项里面写表达式

封装数据到Map集合
第一步 声明map集合
第二步 生成get和set方法
 
第三步 在表单输入项的name属性值里面写表达式

 

案例-添加客户功能
1 模型驱动获取表单数据
 
2 在hibernate实现
 
3 添加之后到列表页面中,让列表的action执行一次

 

附录源码:

BookAction.java

package cn.itcast.action;

import com.opensymphony.xwork2.ActionSupport;

public class BookAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		return "success";
	}
}

OrdersAction.java

package cn.itcast.action;

import com.opensymphony.xwork2.ActionSupport;

public class OrdersAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		return "success";
	}
}

DataDemo1Action.java

package cn.itcast.data;

import com.opensymphony.xwork2.ActionSupport;
/**
 * 
* @ClassName: DataDemo1Action 
* @Description: 使用属性封装获取表单数据
* @author swift_hua@126.com
* @date 2017年7月23日 下午11:10:11
 */
public class DataDemo1Action extends ActionSupport {

	//1 定义变量
	//变量的名称和表单输入项name属性值一样
	private String username;
	private String password;
	private String address;
	
	//2 生成变量的set和get方法
	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;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
	
	@Override
	public String execute() throws Exception {
		System.out.println(username+":"+password+":"+address);
		return NONE;
	}


}


DataDemo2Action.java

package cn.itcast.data;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import cn.itcast.entity.User;
/**
 * 使用模型驱动获取表单数据
 * @author asus
 *
 */
public class DataDemo2Action extends ActionSupport implements ModelDriven<User>{

	//创建对象
	//前提要求: 表单输入项name属性值 和 实体类属性名称一样
	private User user = new User();
	public User getModel() {
		//返回创建user对象
		return user;
	}
	
	//属性封装
	private String username;
	private String password;
	private String address;

	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;
	}


	public String getAddress() {
		return address;
	}


	public void setAddress(String address) {
		this.address = address;
	}


	@Override
	public String execute() throws Exception {
		
		System.out.println(user);
		return NONE;
	}




}


DataDemo3Action.java

package cn.itcast.data;

import com.opensymphony.xwork2.ActionSupport;

import cn.itcast.entity.Book;
import cn.itcast.entity.User;
/**
 * 使用表达式封装数据到实体类对象
 * @author asus
 *
 */
public class DataDemo3Action extends ActionSupport {

	//1 声明实体类
	private User user;
	
	private Book book;
	
	public Book getBook() {
		return book;
	}
	public void setBook(Book book) {
		this.book = book;
	}
	//2 生成实体类变量的set和get方法
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}

	@Override
	public String execute() throws Exception {
		System.out.println(user);
		System.out.println(book.getBname());
		return NONE;
	}






}


ListAction.java

package cn.itcast.data;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

import cn.itcast.entity.User;
/**
 * 封装数据到list集合
 * @author asus
 *
 */
public class ListAction extends ActionSupport {

	// 1 声明List变量
	private List<User> list;
	// 2 生成get和set方法
	public List<User> getList() {
		return list;
	}
	public void setList(List<User> list) {
		this.list = list;
	}

	@Override
	public String execute() throws Exception {
		System.out.println(list);
		return NONE;
	}


}


MapAction.java

package cn.itcast.data;

import java.util.Map;

import com.opensymphony.xwork2.ActionSupport;

import cn.itcast.entity.User;
/**
 * 封装数据到map集合
 * @author asus
 *
 */
public class MapAction extends ActionSupport {

	// 1 声明map集合
	private Map<String,User> map;
	public Map<String, User> getMap() {
		return map;
	}
	public void setMap(Map<String, User> map) {
		this.map = map;
	}


	@Override
	public String execute() throws Exception {
		System.out.println(map);
		return NONE;
	}


}

Book.java

package cn.itcast.entity;

public class Book {

	private String bname;

	public String getBname() {
		return bname;
	}

	public void setBname(String bname) {
		this.bname = bname;
	}
	
}


User.java

package cn.itcast.entity;

public class User {

	private String username;
	private String password;
	private String address;
	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;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", address=" + address + "]";
	}
	
}

Form1DemoAction.java

package cn.itcast.form;

import java.util.Map;
import java.util.Set;

import org.apache.catalina.tribes.util.Arrays;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Form1DemoAction extends ActionSupport {

	public String execute() throws Exception {
		//第一种方式 使用ActionContext类获取
		//1 获取ActionContext对象
		ActionContext context = ActionContext.getContext();
		//2 调用方法得到表单数据
		// key是表单输入项name属性值,value是输入的值
		Map<String, Object> map = context.getParameters();
		
		Set<String> keys = map.keySet();
		for (String key : keys) {
			//根据key得到value
			//数组形式:因为输入项里面可能有复选框情况
			Object[] obj = (Object[]) map.get(key);
			System.out.println(Arrays.toString(obj));
		}
		
		return NONE;
	}
}


Form2DemoAction.java

package cn.itcast.form;

import java.util.Map;
import java.util.Set;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.catalina.tribes.util.Arrays;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Form2DemoAction extends ActionSupport {

	public String execute() throws Exception {
		//第一种方式 使用ServletActionContext类获取
		//1 使用ServletActionContext获取request对象
//		HttpServletRequest request = ServletActionContext.getRequest();
//		//2 调用request里面的方法得到结果
//		String username = request.getParameter("username");
//		String password = request.getParameter("password");
//		String address = request.getParameter("address");
//		
//		System.out.println(username+":"+password+":"+address);
//		
		//操作三个域对象
		//1 request域
		HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("req", "reqValue");
		
		//2 session域
		HttpSession session = request.getSession();
		session.setAttribute("sess", "sessValue");
		
		//3 ServletContext域
		ServletContext context = ServletActionContext.getServletContext();
		context.setAttribute("contextname", "contextValue");
		
		return NONE;
	}
}





Form3DemoAction.java

package cn.itcast.form;

import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.apache.catalina.tribes.util.Arrays;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 使用接口注入方式
 * @author asus
 *
 */
public class Form3DemoAction extends ActionSupport implements ServletRequestAware {

	private HttpServletRequest request ;
	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
	}
	
	public String execute() throws Exception {
		request.getParameter("");
		
		return NONE;
	}


}


Form4DemoAction.java

package cn.itcast.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

import cn.itcast.entity.User;
/**
 * 使用ServletActionContext获取表单数据封装到实体类对象里面
 * @author asus
 *
 */
public class Form4DemoAction extends ActionSupport {

	public String execute() throws Exception {
		//1 获取表单数据
		HttpServletRequest request = ServletActionContext.getRequest();
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String address = request.getParameter("address");
		
		//2 封装到实体类对象里面
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		user.setAddress(address);
		
		System.out.println(user);
		return NONE;
	}


}

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

	<package name="demo1" extends="struts-default" namespace="/">
	
		<!-- 全局结果页面配置 -->
		<!-- <global-results>
			<result name="success">/hello.jsp</result>
		</global-results> -->
		
		<action name="book" class="cn.itcast.action.BookAction">
			<!-- action访问名称 -->
			<result name="success"  type="chain">orders</result>
		</action>
		<action name="orders" class="cn.itcast.action.OrdersAction">
			<result name="success">/hello.jsp</result>
		</action>
	</package>
	
	<!-- 获取表单提交数据 -->
	<package name="demo2" extends="struts-default" namespace="/">
		<action name="form1" class="cn.itcast.form.Form1DemoAction"></action>
		<action name="form2" class="cn.itcast.form.Form2DemoAction"></action>
		<action name="form4" class="cn.itcast.form.Form4DemoAction"></action>
		
		<action name="data1" class="cn.itcast.data.DataDemo1Action"></action>
		<action name="data2" class="cn.itcast.data.DataDemo2Action"></action>
		<action name="data3" class="cn.itcast.data.DataDemo3Action"></action>
		
		<action name="list" class="cn.itcast.data.ListAction"></action>
		<action name="map" class="cn.itcast.data.MapAction"></action>
	</package>
</struts>



web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>struts2_day01</display-name>
    <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.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

data1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="${pageContext.request.contextPath }/data1.action" method="post">
		username:<input type="text" name="username"/>
		<br/>
		password:<input type="text" name="password"/>
		<br/>
		address:<input type="text" name="address"/>
		<br/>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>


data2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="${pageContext.request.contextPath }/data2.action" method="post">
		username:<input type="text" name="username"/>
		<br/>
		password:<input type="text" name="password"/>
		<br/>
		address:<input type="text" name="address"/>
		<br/>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>


data3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="${pageContext.request.contextPath }/data3.action" method="post">
		username:<input type="text" name="user.username"/>
		<br/>
		password:<input type="text" name="user.password"/>
		<br/>
		address:<input type="text" name="user.address"/>
		<br/>
		bname: <input type="text" name="book.bname"/>
		<br/>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>


form1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="${pageContext.request.contextPath }/form4.action" method="post">
		username:<input type="text" name="username"/>
		<br/>
		password:<input type="text" name="password"/>
		<br/>
		address:<input type="text" name="address"/>
		<br/>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>


list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="${pageContext.request.contextPath }/list.action" method="post">
		<!-- list[0] : 表示list集合中第一个user对象 -->
		username:<input type="text" name="list[0].username"/>
		<br/>
		password:<input type="text" name="list[0].password"/>
		<br/>
		address:<input type="text" name="list[0].address"/>
		
		<br/><br/>
		
		username:<input type="text" name="list[1].username"/>
		<br/>
		password:<input type="text" name="list[1].password"/>
		<br/>
		address:<input type="text" name="list[1].address"/>
		<br/>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>


map.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="${pageContext.request.contextPath }/map.action" method="post">
		<!-- 设置key值 map['key值']
			设置value值
		 -->
		username:<input type="text" name="map['one'].username"/>
		<br/>
		password:<input type="text" name="map['one'].password"/>
		<br/>
		address:<input type="text" name="map['one'].address"/>
		
		<br/><br/>
		
		username:<input type="text" name="map['abcd'].username"/>
		<br/>
		password:<input type="text" name="map['abcd'].password"/>
		<br/>
		address:<input type="text" name="map['abcd'].address"/>
		<br/>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>


hello.jsp和world.jsp只是一个显示界面,不写出了

© 著作权归作者所有

共有 人打赏支持
swift_hua
粉丝 0
博文 33
码字总数 20868
作品 0
成都
程序员
Struts2学习整理

Struts2的相关配置文件 default.properties -- 在org/apache/struts2/目录下,代表的是配置的是Struts2的常量的值 struts-default.xml -- 在Struts2的核心包下,代表的是Struts2核心功能的配...

Lunqi ⋅ 2015/09/10 ⋅ 0

Struts2文件的上传和下载

文件上传的原理: 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1) application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里的value属性值,采用这种...

倚小丁 ⋅ 2010/11/01 ⋅ 3

ognl-值栈基本操作

一 OGNL概述 1 之前web阶段,学习过EL表达式,EL表达式在jsp中获取对象里面的值 2 OGNL是一种表达式,这个表达式功能更加强大 (1)在Struts2里面操作值栈数据 (2)一般在Struts2里操作ogn...

Bbigbug ⋅ 2017/10/16 ⋅ 0

Java web学习(五)

Struts2框架几乎是目前最优秀的MVC框架之一。Struts2框架是WebWork框架和Struts1框架的结合体。 Struts2结构体系 注:现在StrutsPrepareAndExecuteFilter过滤器已经代替了FilterDispatcher过...

kakayang2011 ⋅ 2016/03/10 ⋅ 0

Struts2核心技术 (二)

struts2中的参数封装 静态参数封装 什么是静态参数? 静态参数就是硬编码的,不可随意改变。 例子:

architect刘源源 ⋅ 04/24 ⋅ 0

struts 2 复习笔记

struts2 1.配置web.xml文件添加struts2过滤器: <filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter......

MarkWills ⋅ 2011/04/30 ⋅ 0

Java程序员从笨鸟到菜鸟之(四十三)细谈struts2(六)获取servletAPI和封装表单数据

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 一:获取servletAPI的三种方法 在传统的Web开发中,经常会用到Servlet API中的HttpServletRequest、HttpSes...

长平狐 ⋅ 2012/11/12 ⋅ 0

谈谈你对流行框架的理解(​

1、谈谈你对Struts的理解。 答: 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中...

universeye ⋅ 2014/05/13 ⋅ 1

Struts2(接受表单参数)请求数据自动封装和数据类型转换

Struts2请求数据自动封装:   (1)实现原理:参数拦截器   (2)方式1:jsp表单数据填充到action中的属性;    普通的成员变量,必须给set,get可以不给的。     注意点,Action中定...

别叫小伙 ⋅ 2017/02/21 ⋅ 0

MVC三层架构在各框架中的特征

1.基于web开发中最原始的jsp+Servlet 图形化理解jsp+servlet结构: 1.从结构上分析jsp+servlet图解原理: 在基于mvc设计模式下的最原始的jsp+Servlet框架,在某种程度上是不能够达到mvc最直观...

鲁雯雪 ⋅ 2014/03/14 ⋅ 159

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Mahout推荐算法API详解

前言 用Mahout来构建推荐系统,是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口;困难是因为我们不了解算法细节,很难去根...

xiaomin0322 ⋅ 26分钟前 ⋅ 0

WampServer默认web服务器根目录位置

安装WampServer之后的web服务器根目录默认位置在WampServer安装目录下的www:

临江仙卜算子 ⋅ 27分钟前 ⋅ 0

Redux的一些手法记录

Redux Redux的基本概念见另一篇文。 这里记录一下Redux在项目中的实际操作的手法。 actions 首先定义action.js,actions的type,可以另起一个action-type.js文件。 action-type.js用来存...

LinearLaw ⋅ 28分钟前 ⋅ 0

android 手势检测(左右滑动、上下滑动)

GestureDetector类可以让我们快速的处理手势事件,如点击,滑动等。 使用GestureDetector分三步: 1. 定义GestureDetector类 2. 初始化手势类,同时设置手势监听 3. 将touch事件交给gesture...

王先森oO ⋅ 43分钟前 ⋅ 0

java 方法的执行时间监控 设置超时(Future 接口)

java 方法的执行时间监控 设置超时(Future 接口) import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor......

青峰Jun19er ⋅ 47分钟前 ⋅ 0

一名开源小白的Apache成长自述

今天收到了来自Apache Vote我成为Serviceomb项目Committer的邮件,代表自己的贡献得到了充分的肯定;除了感谢团队的给力支持,我更希望将自己的成长经历——如何践行Apache Way的心得介绍给大...

微服务框架 ⋅ 49分钟前 ⋅ 0

vim介绍、颜色显示和移动光标、一般模式下复制、剪切和粘贴

1.vim 是 vi 的升级版 vim 是带有颜色显示的 mini安装的系统,一般都不带有vim [root@aminglinux-128 ~]# yum install -y vim-enhanced已加载插件:fastestmirror, langpacksLoading mir...

oschina130111 ⋅ 50分钟前 ⋅ 0

Deepin 操作系统四面楚歌

作为国内做的最好的 Linux 发行版,源自 Debian sid 的 Deepin 目前正面临重重困境,新版本不断延期,开发人员离职,bug 长期得不到修复,和 Debian/Ubuntu 的兼容性问题也面临越来越严重的挑...

六库科技 ⋅ 50分钟前 ⋅ 0

MyBatis之动态sql

我们需要知道的是,使用mybatis重点是对sql的灵活解析和处理。在原先的UserMappser.xml中,我们这样查询表中满足条件的记录 : 123 <select id="findUserList" parameterType="userQuery...

瑟青豆 ⋅ 50分钟前 ⋅ 0

这届俄罗斯世界杯的冷门那么多怎么办?

最纯粹的世界杯,最神奇的大冷门。 德国0比1被墨西哥摩擦了。 日本历史性的赢了哥伦比亚。 C罗也挑平了西班牙。 梅西被冰岛狮吼吼愣神了。 就连11次进世界杯4强的巴西也被瑞士逼平了。 天台已...

开源中国众包平台 ⋅ 51分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部