Top10Servlet
<span style="font-size:18px;">/**
* Top10
* author:杨鑫
*/
package servlet; import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class Top10Servlet
*/
@WebServlet("/top10")
public class Top10Servlet extends HttpServlet {
private List<String> londonAttractions;
private List<String> parisAttractions; /**
* 默认的无參数构造方法
*/
public Top10Servlet() {
super();
// TODO Auto-generated constructor stub
} public void init() throws ServletException {
// TODO Auto-generated method stub
londonAttractions = new ArrayList<String>(10);
londonAttractions.add("Buckingham Palace");
londonAttractions.add("London Eye");
londonAttractions.add("British Museum");
londonAttractions.add("National Gallery");
londonAttractions.add("BigBen");
londonAttractions.add("Tower of London");
londonAttractions.add("Natural History Museum");
londonAttractions.add("Canary Wharf");
londonAttractions.add("2012 Olympic Park");
londonAttractions.add("St Paul's Cathedral"); parisAttractions = new ArrayList<String>(10);
parisAttractions.add("Eiffel Tower");
parisAttractions.add("Notre Dame");
parisAttractions.add("The Louvre");
parisAttractions.add("Champs Elysees");
parisAttractions.add("Arc de Triomphe");
parisAttractions.add("Sainte Chapelle Church");
parisAttractions.add("Les Invalides");
parisAttractions.add("Musee d'Orsay");
parisAttractions.add("Montmarte");
parisAttractions.add("Sacre Couer Basilica");
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String city = request.getParameter("city");
if(city != null && (city.equals("london") || city.equals("paris"))){
showAttractions(request, response, city);
}else{
showMainPage(request, response);
}
} private void showMainPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.print("<html><head>" + "<title>Top 10 Tourist Attractions</title>" + "</head><body>" + "please select a city:" + "<br/><a href='? city=london'>London</a>" + "<br/><a href='? city=paris'>Paris</a>" + "</body></html>");
} private void showAttractions(HttpServletRequest request, HttpServletResponse response, String city) throws ServletException, IOException{
int page = 1;
String pageParameter = request.getParameter("page");
if(pageParameter != null){
try{
page = Integer.parseInt(pageParameter);
}catch(NumberFormatException e){
e.printStackTrace();
}
if(page > 2){
page = 1;
}
} List<String> attractions = null;
if(city.equals("london")){
attractions = londonAttractions;
}else if(city.equals("paris")){
attractions = parisAttractions;
} response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head>" + "<title>Top 10 Tourist Attraction</title>" + "</head><body>");
out.println("<a href ='top10'>Select City</a>");
out.println("<hr/>Page " + page + "<hr/>"); int start = page * 5 - 5;
for(int i = start; i < start + 5; i++)
{
out.println(attractions.get(i) + "<br/>");
out.print("<hr style ='color:blue'/>" + "<a href='? city=" + city + "&page=1'>Page 1</a>");
out.println(" <a href='?city=" + city + "&page=2'>Page 2</a>");
out.println("</body></html>");
}
} }
</span>
这里的配置文件我就不贴出来了。
请自行配置:
如图效果
细节:
Top10Servlet的更多相关文章
- java web用于保持状态的4种方法
方法一:网址重写 通过在url地址后面添加若干的token作为查询字符串来实现.token的值一般为 键=值 url?key1=value1&key2=value2&...&k ...
- servlet之重写
package app02a;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;impo ...
- servlet 会话管理
一.URL 重写 URL 重写是一种会话跟踪技术,它将一个或多个token添加到URL的查询字符串中,每个token通常为 key=value形式,如下: url?key-1=value-1& ...
- Servlet会话管理一(URL重写和表单隐藏域)
会话可以简单的理解为客户端用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器的整个过程称为一个会话.即一个客户端用户和服务器端进行通讯的过程,也是客户端和服务器端之间的数据传 ...
随机推荐
- Ansible+Jenkins+Gitlab搭建及配置
Ansible+Jenkins+Gitlab搭建及配置,已经生产环境使用,运行良好. 主机组文件里面好多ip敏感信息就不写了
- 【洛谷2624_BZOJ1005】[HNOI2008] 明明的烦恼(Prufer序列_高精度_组合数学)
题目: 洛谷2624 分析: 本文中所有的 "树" 都是带标号的. 介绍一种把树变成一个序列的工具:Prufer 序列. 对于一棵 \(n\) 个结点的树,每次选出一个叶子(度数为 ...
- ACM_最短网络(最小生成树)
Problem Description: Farmer John has been elected mayor of his town! One of his campaign promises wa ...
- 我正在学英语是用learning english还是用studying english?
学一门语言用 learn. study 表示深入研究,一般指在大学里.如果大学里的专业是英语,就可以说 study English. 1. If you study hard, you will le ...
- Microsoft SQL Server 2008/2012 Internals 一处疑问
Kalen Delaney 等著的深入解析 Microsoft SQL Server 系列,享有盛誉,深入研读,是管窥深奥复杂之 SQL Server 的阶梯与门径.手头有 Microsoft SQL ...
- Oracle12C用户创建、授权、登录
Oracle12C用户创建.授权.登录 1.以系统用户登录 C:\Users\LEI>sqlplus sys/dwh as sysdba; SQL*Plus: Release 12.1.0.2. ...
- 02--Tomcat总体结构分析一
注:此文章大部分参考大神文档,并且结合自身理解,补充了其他相关知识,谢绝转载. 大神原文地址链接:http://www.ibm.com/developerworks/cn/java/j-lo ...
- web流行工具
中小型公司: Node.js:现代工业化前端的基础: RequireJS:AMD规范, 即将过时的 JavaScript 模块化方案: Bower:前端模块源: npm:前端工具源,另一个潜在的前端模 ...
- 使用Kettle增量抽取MongoDB数据实践
需求: 增量抽取MongoDB数据并加载到MSSQL 由于不能使用关系型数据库的自定义SQL, 所以主要遇到的问题有: 增量时间的查询和参数控制 ETL的批次信息和调用参数的写入 第一个问题的解决如下 ...
- 清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具
https://gitee.com/bitprince/memory 1. 概述 1.1 连接.语句和结果集 从JDBC的规范上看,其对数据访问层有相当简洁的抽象:1.连接(connection) 2 ...