web基础(二)

来源:互联网 发布:sql union横向合并 编辑:程序博客网 时间:2024/04/30 00:24
//HttpServletRequest reqreq.setAttribute("heelo","world");resp.sendRedirect(req.getContextPath()+"01/02.jsp");客户端跳转 值传递不到jsp页面 这种方式只能把值存在session中 req.getSession().setAttribute()传值 只能服务器端跳转req.setAttribute("hello","world");RequestDispatcher rd = req.getRequestDispactcher("01/02.jsp");rd.forward(req,rsp);jsp文件放入WEB-INF中无法直接访问只能通过servlet 服务器端的跳转去访问req.setAttribute("hello","world");RequestDispatcher rd = req.getRequestDispactcher("WEB-INF/01/02.jsp");rd.forward(req,rsp);此时直接访问02.jsp地址无法访问 只能通过配置的servlet去访问当把一个对象传递给jsp页面req.setAttribute("user",u)jsp中则通过${user.nickname} 对象名称.属性去获取值jsp中标签gt > greater thanlt < less thanne !=eq == jsp标签中 if else<c:if test="${user.age gt 18}">成年了</c:if><c:choose>   <c:when test="${user.age le 18}">未成年</c:when>   <c:otherwise>18</c:otherwise>s</c:choose>jsp标签中的for<c:forEach var="u" items="${users}" varStatus="s">   //s相当于迭代器   ${s.current.name}   ${s.index}//当前索引   ${s.first}//是否是第一个 true false   ${s.last}//是否是最后一个值 true false   ${s.begin}//开始的索引   ${s.end}//从哪一个结束的 设置的索引   ${u.usernames}</c:forEach>s${empty aa}//判断aa是否为空 ${not empty aa}//判断aa不为空jsp 页面中的跳转 redirect 客户端跳转servlet 跳转 forward 服务器端跳转  servlet如果客户端跳转 则跳转到另一个servlet客户端重定向和服务端跳转的区别区别客户端重定向: 这是HTTP协议规定的一种机制,浏览器的地址会发生变化,会发起新的请求,原先的request对象和reponse对象在新的请求里面不可用。request对象和reponse对象是存在于服务端的对象,原先的请求已经结束了,这两个对象在服务端都被释放了服务端跳转:  就是在服务端将请求由当前servlet分发给另外一个servlet(JSP本质也是sevlet)进行处理,原先的request对象和reponse对象继续可用RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect 方法不仅可以重定向到当前应用程序中的其他资源,还可以使用绝对URL重定向到其他站点的资源Redirect(客户端重定向)标准意义上的“重定向”指的是HTTP重定向,它是HTTP协议规定的一种机制。这种机制是这样工作的:当client向server发送一个请求,要求获取一个资源时,在server接收到这个请求后发现请求的这个资源实际存放在另一个位置,于是server在返回的response中写入那个请求资源的正确的URL,并设置reponse的状态码为301(表示这是一个要求浏览器重定向的response),当client接受到这个response后就会根据新的URL重新发起请求。重定向有一个典型的特症,即,当一个请求被重定向以后,最终浏览器上显示的URL往往不再是开始时请求的那个URL了。这就是重定向的由来。http重定向的一种典型应用是防止表单重复提交,其原理是:假如当前是一个用户信息编辑页面,表单通过Post提交给saveUser.action, 当该请求提交后,可返回一个重定向的response,地址可以是viewUser.action,即定向到用户详情页面(不能修改和提交)。当然这种防止页面重复提交的方法作用是有限的, 如果用户返回表单页面,重新提交表单,或是用户在服务器端响应到达之前,多次点击提交按钮(可通过JavaScript控制提交按钮点击次数)等等。在Servlet里,实现客户端重定向的方法是:response.sendRedirect()Dispatch(服务器端重定向)Dispatch(Forward)指的是服务器在处理request的过程中将request先后委托多个servlet或jsp接替进行处理的过程。最为常见的是先由一个Servlet处理(比如实现业务逻辑的计算),然后forward给一个JSP进行视图的渲染。在Servlet里,实现dispatch是通过RequestDispatchers来实现的,而这个类有两个方法,一个是forward,另一个是include,相应的在JSP里实现dispatch的标签也有两个:<jsp:forward/>和<jsp:include/>.  不管是forward还是include,我们可以清楚的看到,从一个servlet或jsp向别一个servlet或jsp跳转,request和reponse始终在期间传递,这是服务器端能实现dispatch模式的关键。换句话说,我们可以把request和reponse看作是一种资源,一系列的servlet和jsp都是在基于同一份资源完成它们职责范围之内的计算。
原创粉丝点击