《老罗Android第二季》ViewPager分页 服务器端Web开发

  以前写了服务器端web开发博客,现在差不多又忘了怎么操作,这个写详细点,就不用做重复的工作了。
  要建立服务端,就要建一个Web工程,然后发布到服务器上。我用的服务器环境是Tomcat V7.0 + Appach.
  怎么建一个Web工程,查看:
eclipse+tomcat开发web项目
 下面进入正题,讲一下老罗的这个视频的服务器端的建立(视频上没讲)。先来看一下项目结构:
       
可以看到,项目中要用到PagerAction.java,DividePage.java 用来分页,JsonTools.java 用来生成Json数据,MyCity.java用来生成源数据,ViewPagerServlet.java用来得到JSON数据并发布到网页上。           
还有一个index.jsp文件。







        
1. 在WebContent目录下,新建index.jsp文件。
用户进入这个工程,首先会访问到这个文件,这个文件几乎是通用的。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
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>My JSP 'index.jsp' starting page</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>
    This is my JSP page. <br>
  </body>
</html>                 
<% 这里可以写程序语言,如C#后台程序%>  <% %>这里的内容是在后面运行的。
<base href=> 这里是一个链接,就是页面的默认链接。 

加入了这个文件之后,发布上去之后就可以通过  http://192.168.0.161:8080/viewpager/ 连接上,看到连接成功的现象。
2. 生成JSON数据
1. MyCity 生成源始数据            
package com.city;
import java.util.ArrayList;
import java.util.List;
public class MyCity {
	public static List<String> createDataSource() {
		List<String> list = new ArrayList<String>();
		for (int i = 1; i < 120; i++) {
			list.add("伦敦 " + i);
		}
		return list;
	}
}



        
2.  JsonTools.java 生成JSON数据           
package com.city;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONSerializer;

public class JsonTools {
	public JsonTools(){		
	}
	public static String createProductJsonString(String key,Object object){
		String result="";
		Map<String,Object> map=new HashMap<String,Object>();
		map.put(key, object);
		result=JSONSerializer.toJSON(map).toString();
		return result;
	}	
}       
3. 实现分页,把JSON数据发布到网页上
1. DividePage.java 实现数分页            
package com.city;
public class DividePage {
	private int pageSize; // 每页显示的条数
	private int recordCount;// 记录的总条数
	private int currentPage;// 当前页数
	private int pageCount;// 总页数
	public DividePage(int pageSize, int recordCount, int currentPage) {
		this.pageSize = pageSize;
		this.recordCount = recordCount;
		this.setCurrentPage(currentPage);
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getRecordCount() {
		return recordCount;
	}
	public void setRecordCount(int recordCount) {
		this.recordCount = recordCount;
	}
	public int getCurrentPage() {
		return currentPage;
	}
	//设置定位在当前页
	public void setCurrentPage(int currentPage) {
		int activePage=currentPage<=0?1:currentPage;
		activePage=activePage>getPageCount()?getPageCount():activePage;
		this.currentPage = activePage;
	}
	//获得总页数
	public int getPageCount() {
		pageCount=recordCount/pageSize;
		int mod=recordCount%pageSize;
		if(mod!=0){
			pageCount++; //还余有就加1
		}		
		return recordCount==0?1:pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}
	//从多少页跳到多少页
	public int getFromIndex()
	{		
		return (currentPage-1)*pageSize;
	}
	public int getToIndex(){
		return Math.min(recordCount, currentPage*pageSize);
	}	
}       
2. 实现Servlet处理            
package com.city;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ViewPagerServlet") //一定要加上这句
public class ViewPagerServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;	
	public ViewPagerServlet(){
		super();
	}	
	@Override
	public void destroy() {
		super.destroy();
	}
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
	this.doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");		
		PrintWriter writer = response.getWriter();
		List<String> list = MyCity.createDataSource();
		String pageNo = request.getParameter("pageNo");//得到访问参数
		int currentPage = 1;
		if (pageNo != null) {
			currentPage = Integer.parseInt(pageNo);
		}
		DividePage pUtil = new DividePage(25, list.size(), currentPage);
		int fromIndex = pUtil.getFromIndex();
		int toIndex = pUtil.getToIndex();
		List<String> subList = list.subList(fromIndex, toIndex);
		String jsonString = JsonTools.createProductJsonString("citys", subList);
		writer.print(jsonString); //写到网页上去				
		writer.flush();
		writer.close();
	}	
	@Override
	public void init() throws ServletException {	
	}
}


        
   编写好Servlet之后,接下来要告诉Web容器有关于这个Servlet的一些信息。在Servlet 3.0中,可以使用标注(Annotation)来告知容器哪些Servlet会提供服务以及额外信息。 只要在Servlet上设置@WebServlet标注,容器就会自动读取当中的信息。上面的@WebServlet("/ViewPagerServlet") 告诉容器,如果请求的URL是"/ViewPagerServlet",则由ViewPagerServlet的实例来提供服务。也可以使用@WebServlet提供更多信息,如
   @WebServlet(
        name=”Hello”,
        urlPatterns={“/hello.view”},
        loadOnStartup=1
    )
    public class HelloServlet extends HttpServlet {。。。。}

4. 将工程发布到服务器
编程部分完成之后,就可以将工程发布到服务器了。
4.1 首先要有一个Server.如果没有,就在工程上右键--->New-->Other-->Server-->Server.
 然后把要发布的项目加到Server中,点击Strart。当它的状态成这样时,就表示发布成功:
   
那这个项目发布保存到哪里去了呢?
在Server的Tomcat V7.0上右键-->open -->把Server Locations修改(添加项目后,好像就不能改了,没事,再新建一个。)如图:
  
然后,发布的项目就会在.../Tomcat 7.0/webapps 目录下。
发布成功后,这个时候再访问,就可以看到我们的JSON数据了:
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值