• servlet的简单使用总结


    首先在WEB-INF 建一个web.xml 配置文件  用于配置监听、过滤、servlet、设置会话(session)过期时间
    启动web项目后,web容器首先回去找web.xml文件,读取这个文件
    容器会创建一个 ServletContext ( servlet 上下文),整个 web 项目的所有部分都将共享这个上下文。ServletContext存储于服务端,每个客户端都可以访问到,数据共享
    容器将 转换为键值对,并交给 servletContext
    容器创建 中的类实例,创建监听器
    容器加载filter,创建过滤器, 要注意对应的filter-mapping一定要放在filter的后面
    容器加载servlet,加载顺序按照 Load-on-startup 来执行
    完整加载顺序:ServletContext -> context-param -> listener-> filter -> servlet
    这里以MainSvl为例  主要是把svl名字还有路径写对

    1. This is the description of my J2EE component
    2. This is the display name of my J2EE component
    3. MainSvl
    4. com.ice.control.MainSvl

    然后我们就可以写我们的main.jsp 和MainSvl了

    1. public void doGet(HttpServletRequest request, HttpServletResponse response)
    2. throws ServletException, IOException {
    3. AdmBiz biz =new AdmBiz();
    4. try {
    5. List fods = biz.getRedisFod();
    6. request.setAttribute("fods", fods);
    7. request.getRequestDispatcher("/view/main.jsp").forward(request,response);
    8. } catch (Exception e) {
    9. request.getRequestDispatcher("/view/error.jsp").forward(request, response);
    10. }
    11. }

    1.在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个是get。可在

    中的method属性中指定提交的方式。如:,如果不指定method属性,则会默认该属性为”get”方式。通过get方式提交的数据有大小的限制,通常在1024字节左右。也就是说如果提交的数据很大,用get方法就可需要小心;而post方式没有数据大小的限制,理论上传送多少数据都可以。通过get传递数据,实际上是将传递的数据按照”key,value”的方式跟在URL的后面来达到传送的目的的 例如 password=123456;而post传递数据是通过http请求的附件进行的,在URL中并没有明文显示。

    具体的我是通过监听先把所有的产品给缓存到redis中

    我是通过监听先把所有的产品给缓存到redis中

    具体的内容其实就是k,v结构存入redis

    1. public void contextInitialized(ServletContextEvent arg0) {
    2. List fods =getAllFod();//获取食物
    3. setRedisInfo(fods); //食物存入jedis
    4. System.out.println("redis初始化首页餐品数据成功");
    5. }
    6. private List getAllFod(){
    7. List fods= null;
    8. AdmBiz biz =new AdmBiz();
    9. try {
    10. fods =biz.getFod();
    11. } catch (Exception e) {
    12. // TODO Auto-generated catch block
    13. e.printStackTrace();
    14. }
    15. return fods;
    16. }
    17. private void setRedisInfo(List fods){
    18. Jedis jedis = RedisUtil.getJedis();
    19. for(Fod fd : fods){
    20. String fno = String.valueOf(fd.getFno()); //存入jedis的是hash key value 结构 key 是主键fno 放一个字符串类型
    21. Gson gson = new Gson();
    22. String fdJson = gson.toJson(fd); //value是类 转化为json的字符串
    23. jedis.hset("allFodList", fno, fdJson); // 存入redis 的 名字是 allFodList
    24. }
    25. }

    然后redis 在转化回去

    1. public List getRedisFod() throws Exception{
    2. List fods =null;
    3. Jedis jedis = RedisUtil.getJedis();
    4. Map maps = jedis.hgetAll("allFodList"); //从此方法获取个hashset 通过key名字
    5. Set sets = maps.keySet();
    6. Gson gson = new Gson();
    7. fods = new ArrayList(10);
    8. for(String key: sets){
    9. String fdJson = maps.get(key);
    10. Fod fd = gson.fromJson(fdJson, Fod.class); //从json转化橙food类
    11. fods.add(fd);
    12. }
    13. return fods;
    14. }

    同时我们可以在main.jsp跳转到其它的servlet 例如

      <a title="查看美食" href="<%=basePath%>ClassifySvl?styno=1">美食a>

    这样一次点击就是一次跳转。这个我们可以在后台通过

    request.getParameter("styno")  来获取

    然后到数据库进行查询

    传统jdbc查询方式

    1. public List getClzFod(int a) throws Exception {
    2. List fods =null;
    3. String sql ="select fno,fname,fsaleno,fprice,fpicname from tfood where styno=? and fstate=1";
    4. this.openConnection();
    5. PreparedStatement ps = connection.prepareStatement(sql); //用连接的 准备statement
    6. ps.setInt(1, a);
    7. ResultSet rs = ps.executeQuery(); // 用准备的statement 执行罗列
    8. fods= new ArrayList(6); //初始化集合
    9. ImgConfigUtil picutil =ImgConfigUtil.newInstance();
    10. while(rs.next()){
    11. Fod fd = new Fod();
    12. fd.setFname(rs.getString("fname"));
    13. fd.setFno(rs.getInt("fno"));
    14. fd.setFprice(rs.getDouble("fprice"));
    15. fd.setFsaleno(rs.getInt("fsaleno"));
    16. fd.setFpicname(picutil.getAccesspath()+rs.getString("fpicname"));
    17. fods.add(fd);
    18. }
    19. return fods;
    20. }

  • 相关阅读:
    手把手教学!新一代 Kaldi: TTS Runtime ASR 实时本地语音识别 语音合成来啦
    P2392 kkksc03考前临时抱佛脚——dfs+剪枝
    解密Kubernetes:探索开源容器编排工具的内核
    python科研绘图:圆环图
    Si3262 集成低功耗SOC 三合一智能门锁应用芯片
    设备驱动理论详解,Linux操作系统原理与应用
    pandas plot函数:数据可视化的快捷通道
    idea 基础设置
    clean code-代码整洁之道 阅读笔记(第十二章)
    大数据编程实验3 熟悉常用的HBase操作前期准备
  • 原文地址:https://blog.csdn.net/Kiritovo/article/details/80863931