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

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

 

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

 

转载于:https://www.cnblogs.com/zemliu/p/3193149.html

你可能感兴趣的文章
NYOJ-613//HDU-1176-免费馅饼,数字三角形的兄弟~~
查看>>
graphite custom functions
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
oracle连接的三个配置文件(转)
查看>>
pytho logging
查看>>
Python内置函数(29)——help
查看>>
oracle导出/导入 expdp/impdp
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
Android TextView加上阴影效果
查看>>
OA项目设计的能力③
查看>>
《梦断代码》读书笔记(三)
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
AngularJS学习篇(一)
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
css3动画——基本准则
查看>>
输入月份和日期,得出是今年第几天
查看>>
pig自定义UDF
查看>>
Kubernetes 运维学习笔记
查看>>
spring security 11种过滤器介绍
查看>>