博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet Filter 示例
阅读量:5889 次
发布时间:2019-06-19

本文共 9856 字,大约阅读时间需要 32 分钟。

 

1. CityQuery.java

package com.xxx.servlet;import com.google.common.collect.Lists;import com.xxx.data.HotelInfo;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.List;/** * Created with IntelliJ IDEA. * User: zhenwei.liu * Date: 13-7-15 * Time: 下午7:39 * To change this template use File | Settings | File Templates. */public class CityQuery extends HttpServlet {    private static String PAGE_NO = "pageNo";    private static String PAGE_SIZE = "pageSize";    private static String CITY = "city";    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        String city = req.getParameter(CITY);        String pageNo = req.getParameter(PAGE_NO);        String pageSize = req.getParameter(PAGE_SIZE);        if (city == null || city.equals("")                || pageNo == null || pageNo.equals("")                || pageSize == null || pageSize.equals(""))            resp.getWriter().println("参数缺失");        // 筛选城市        List
hotelList = Lists.newArrayList(); HotelInfo hotelInfo = HotelInfo.getInstance(); for (String hotelCode : hotelInfo.getHotelInfo().keySet()) { if (hotelCode.contains(city)) hotelList.add(hotelInfo.getHotelInfo().get(hotelCode)); } // 分页 int pageSizeInt = Integer.valueOf(pageSize); int pageNoInt = Integer.valueOf(pageNo); int startIndex = pageSizeInt * (pageNoInt - 1); int endIndex = startIndex + pageSizeInt; if (startIndex < 0) startIndex = 0; if (startIndex > hotelList.size() - 1) startIndex = hotelList.size() - 1; if (endIndex > hotelList.size() - 1) endIndex = hotelList.size() - 1; hotelList = hotelList.subList(startIndex, endIndex + 1); resp.getWriter().println("City: " + city); resp.getWriter().println("Page: " + pageNo); resp.getWriter().println("PageSize: " + pageSize); for (String hotel : hotelList) resp.getWriter().println(hotel); }}

2.HotelQuery.java

package com.xxx.servlet;import com.google.common.base.Charsets;import com.google.common.base.Splitter;import com.google.common.collect.Lists;import com.google.common.collect.Maps;import com.google.common.io.Files;import com.google.common.io.LineProcessor;import com.xxx.data.HotelInfo;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.File;import java.io.IOException;import java.util.List;import java.util.Map;/** * Created with IntelliJ IDEA. * User: zhenwei.liu * Date: 13-7-15 * Time: 下午5:27 * To change this template use File | Settings | File Templates. */public class HotelQuery extends HttpServlet {    private static String SEQ = "seq";    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        String hotelCode = req.getParameter(SEQ);        HotelInfo hotelInfo = HotelInfo.getInstance();        if (hotelCode == null || hotelCode.equals(""))            resp.getWriter().println("参数缺失");        else            resp.getWriter().println(hotelCode + " " + hotelInfo.getHotelInfo().get(hotelCode));    }}

3.WhiteListFilter

package com.xxx.filter;import com.google.common.io.Files;import com.xxx.data.WhiteList;import com.xxx.util.HttpTools;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;import java.util.List;/** * Created with IntelliJ IDEA. * User: zhenwei.liu * Date: 13-7-15 * Time: 下午11:19 * To change this template use File | Settings | File Templates. */public class WhiteListFilter implements Filter {    private static String IP = "ip";    @Override    public void init(FilterConfig filterConfig) throws ServletException {    }    /**     * 过滤白名单     *     * @param servletRequest     * @param servletResponse     * @param filterChain     * @throws IOException     * @throws ServletException     */    @Override    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        HttpServletRequest req = (HttpServletRequest) servletRequest;        HttpServletResponse resp = (HttpServletResponse) servletResponse;        String ip = HttpTools.getRemoteAddress(req);        WhiteList whiteList = WhiteList.getInstance();        if (!whiteList.getWhiteList().contains(ip)) {            resp.setCharacterEncoding("UTF-8");            resp.getWriter().println("您的IP受限");        } else {            resp.setCharacterEncoding("UTF-8");            filterChain.doFilter(req, resp);        }    }    @Override    public void destroy() {    }}

4.HotelInfo.java

package com.xxx.data;import com.google.common.base.Charsets;import com.google.common.base.Splitter;import com.google.common.collect.Lists;import com.google.common.collect.Maps;import com.google.common.io.Files;import com.google.common.io.LineProcessor;import java.io.File;import java.io.IOException;import java.util.List;import java.util.Map;/** * Created with IntelliJ IDEA. * User: zhenwei.liu * Date: 13-7-15 * Time: 下午7:40 * To change this template use File | Settings | File Templates. */public class HotelInfo {    private static String INFO_FILENAME = HotelInfo.class.getClassLoader().getResource("hotelinfo.txt").getPath();    private Map
hotelInfo; // 酒店列表静态数据 private static HotelInfo instance; private static Object lock = new Object(); // 锁对象 public Map
getHotelInfo() { return hotelInfo; } public static HotelInfo getInstance() { if (instance == null) { synchronized (lock) { if (instance == null) { instance = new HotelInfo(); instance.hotelInfo = Maps.newHashMap(); // 初始化酒店信息,读入Map中 File file = new File(INFO_FILENAME); try { // 读取文件同时处理每行数据 Files.readLines(file, Charsets.UTF_8, new LineProcessor
>() { @Override public boolean processLine(String s) throws IOException { // 使用正则切分空字符 List
data = Lists.newArrayList( Splitter.onPattern("\\s").trimResults().omitEmptyStrings().split(s)); instance.hotelInfo.put(data.get(0), data.get(1)); return true; } @Override public List
getResult() { return null; } }); } catch (IOException ex) { ex.printStackTrace(); } } } } return instance; }}

5.WhiteList.java

package com.xxx.data;import com.google.common.base.Charsets;import com.google.common.io.Files;import java.io.File;import java.io.IOException;import java.util.List;/** * Created with IntelliJ IDEA. * User: zhenwei.liu * Date: 13-7-15 * Time: 下午11:39 * To change this template use File | Settings | File Templates. */public class WhiteList {    private static String WHITE_LIST_FILENAME = WhiteList.class.getClassLoader().getResource("whitelist.txt").getPath();    ;    private List
whiteList; // 白名单静态数据 private static WhiteList instance; private static Object lock = new Object(); public static WhiteList getInstance() { if (instance == null) { synchronized (lock) { if (instance == null) { instance = new WhiteList(); File file = new File(WHITE_LIST_FILENAME); try { instance.whiteList = Files.readLines(file, Charsets.UTF_8); } catch (IOException e) { e.printStackTrace(); } } } } return instance; } public List
getWhiteList() { return whiteList; }}

7.web.xml

Servlet Test
Servlet Test
hotelQuery
com.xxx.servlet.HotelQuery
hotelQuery
/hotelQuery
cityQuery
com.xxx.servlet.CityQuery
cityQuery
/cityQuery
WhiteListFilter
com.xxx.filter.WhiteListFilter
WhiteListFilter
/*

8.pom.xml

4.0.0
ServletTest
ServletTest
1.0-SNAPSHOT
xxx.common
xxx-supom-generic
1.2.32
javax.servlet
servlet-api
javax.servlet
jstl
com.google.guava
guava

 

转载地址:http://nprix.baihongyu.com/

你可能感兴趣的文章
Java中String和byte[]间的转换浅析
查看>>
辞职信也要玩出高big
查看>>
什么是异步
查看>>
WordPress 主题切换
查看>>
cookie和session
查看>>
【java】path和classpath
查看>>
UVa 10057 - A mid-summer night's dream
查看>>
解决3 字节的 UTF-8 序列的字节 3 无效
查看>>
jQuery获取属性值
查看>>
浅谈浏览器兼容性问题-(1)产生、看待与思
查看>>
iOS8中定位服务的变化(CLLocationManager协议方法不响应,无法回掉GPS方法,不出现获取权限提示)...
查看>>
BeanUtils\DBUtils
查看>>
Recover the String
查看>>
VC 创建托盘,托盘tooltip。右键托盘菜单,点击别的地方会隐藏掉的问题。
查看>>
11 种在大多数教程中找不到的JavaScript技巧
查看>>
第一天,新的定义
查看>>
WPF EventSetter Handler Command
查看>>
polya定理,环形涂色
查看>>
day4-装饰器前奏
查看>>
【Jest】笔记三:全局变量
查看>>