最近上中间件技术的课,又重温java servlet技术

上课有实验,所以得自己亲手来做,做的过程中,把以前一些模糊的概念摸清:

1.第一个:

 request.getRequestDispatcher("MyJsp.jsp").forward(request, response);

response.sendRedirect("show_servlet");

      1-1.两者区别在于,前者是转发,转发者和接收者共用一个request;后者是一个重定向,转发者和接收者不共用一个request,怎么理解这句话呢:

           很多时候,我们需要往页面发一些数据:我们通常是用 request.setAttribute("title", title);
            request.setAttribute("error",error);  等设置好后,然后用request.getRequestDispatcher("MyJsp.jsp").forward(request, response);来发送;比如这里把数据转发到MyJsp.jsp

            页面中,这时公用一个连接,所以页面收得到数据;

           但是,如果我们使用response.sendRedirect("MyJsp");我们将接收不到数据;除非我们发数据的时候,用的是Session    (因为Session全域都能受到数据)

           request.getSession().setAttribute("url", "MyJsp.jsp");
           request.getSession().setAttribute("xiaoxi", "登陆失败,1秒后跳转返回登录");


      1-2.前台接收数据怎么接收呢:

      有两种方法:1.自己在jsp页面上写java语法,来获得数据后,通过标签<%=%>来将值放到指定位置;

                           2.直接在页面头部加上标签库   <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>,然后使用   ${title}   title指的是  

                               request.setAttribute("title",title);       双引号中的title           

                                 若对于发回来的是一个list<ties>   遍历的方法是:

                                      <c:forEach items="${ties}" var="tie">
   
                                     <ul>
                                       <li>
                                           <p><span>题目:</span>${tie.title}</p>
                                           <p><span>内容:</span>${tie.content}</p>
                                       </li>
                                     </ul>
                                    </c:forEach>     



2.过滤器的使用:

过滤器对于字符的编码,访问量,验证权限来说是很重要的;过滤器的功能是当用户发送请求时,先执行过滤器的代码,过滤器可以将发送的请求的数据的编码同一,还可以在这里做一些,访问量的统计,然后根据业务逻辑,看是否拦截请求;


过滤器的使用:


1.1    首先得有一个继承了Filter的过滤器类:

public class thefifter implements Filter {
  private String encoding;
  private Map<String, String> params = new HashMap<String, String>();
  // 项目结束时就已经进行销毁
  public void destroy() {
   System.out.println("end do the encoding filter!");
   params=null;
   encoding=null;
  }
  public void doFilter(ServletRequest req, ServletResponse resp,
    FilterChain chain) throws IOException, ServletException {
   req.setCharacterEncoding("utf-8");
   
    HttpServletRequest rq = (HttpServletRequest)req;
      HttpServletResponse rp=(HttpServletResponse)resp;
   System.out.println("before encoding " + encoding + " filter!");
     
   chain.doFilter(req, resp);  
   System.out.println("after encoding " + encoding + " filter!");
   System.err.println("----------------------------------------");
  
  }
 
  // 项目启动时就已经进行读取
  public void init(FilterConfig config) throws ServletException {
   System.out.println("begin do the encoding filter!");
    }
 }

2.然后在web配置过滤器

<!-- 请求url日志记录过滤器 -->
 
 <filter>
   <filter-name>thefifter</filter-name>
   <filter-class>fifter.thefifter</filter-class>
  </filter>
  <filter-mapping>
   <filter-name>thefifter</filter-name>
   <url-pattern>/*</url-pattern>                                            <!--/*    代表拦截一切页面,当然可以设置为/a.jsp   或/b.servlet 总之这个就按业务逻辑来了-->
  </filter-mapping>


///先总结一部分

  





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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值