上课有实验,所以得自己亲手来做,做的过程中,把以前一些模糊的概念摸清:
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>
///先总结一部分