javaee里forward与redirect区别
javaee英语单词文档整理

1. web阶段:------------------------- javaweb_day01 ---------------------------------------------1.html 超文本标记语言(Hyper ['h a ipa]text Markup Language)2.color['k A H(r)]颜色、颜料3.size [saiz]大小、尺寸4.align ©lain]对齐、排列、对齐方式5.center「senta(r)]居中、中心、中央6.left [left]左边、居左、左对齐7.right [rait]右边、居右、右对齐、正确的8.paragraph ['p况ragr况f]段落、段<P></P>9.width [wide]宽度10.height [hait]高度、身高11.image ['imi*]图片、图像<img src=" ”/12.list[iist]列表、目录、集合13.order.da] list 有序列表14.unorder list 无序列表15.type[taip类型、品种、样式16.spacing ['spesin]间隙、字距17.rowspan 合并行18.colspan 和并列19.form[f〉m]表单、形式、形状20.input [骨十用输入、输入框21.readonly 只读的22.disable [dis'eib(a)l]禁用、无效23.action ['况kj(a)n]行动、动作24.method ['meead]方法、办法------------------------- javaweb_day02 ---------------------------------------------25.css层叠样式表26.style[stail]样式、风格27.border['b》da]边框、边界28.background ['b况kgraund]背景29.float[flot]漂浮、浮动30.display[di'splei]显示、显示方式、展示31.inline ['in,lain]内联的、行内32.block[blDk]块、阻塞、大块的33.margin ['ma:d§in]外边距、边缘34.padding ['p况din]内边距、填充35.bottom ['bntam]底部、末端36.link [link]连接、结合37.text [tekst]文本38.visited['vizitid]E访问、访问过39.hover['hnva]悬停、盘旋、徘徊40.active [,况ktiv]积极地、激活的、活跃的41.script[skript]脚本42.undefined [A ndi'faind]未定义的、不明确的43.variable ['veriabl]变量、可变的、多变的44.array@rei]数组45.length [|曲创长度46.join 口眄川加入、参加、连接47.reverse [ri'v^s]颠倒、倒转48.popup['pap,Ap]弹出、发射49.push [puj]推进、增加50.DOM (document object model)文档对象模型51.BOM (browser object model) 浏览器对象模型------------------------- javaweb_day03 ------------------------------52.window['windo]窗口、窗户53.eval[i'v况1]重新运算求出参数的内容54.encode [in'kod]编码55.decode['di'kod]解码56.parse[pars]解析、分析57.function['fAnkjan]函数、功能58.alert®],]警告、警戒、警惕59.confirm [kan'f^m]确认、确定60.interval ['int^vl]间隔、间距61.location [lo'kejan]位置、地点、定位62.document['dDkjum(a)nt]文档、文件63.element ['e1im(a)nt]元素、要素64.attribute [a'tribju:t]属性65.node [nod]节点、交点66.onclick鼠标单击67.onblur元素失去焦点68.onchange用户改变域的内容69.ondblclick鼠标双击某个对象70.onfocus元素获得焦点71.onkeydown某个键盘的键被按下72.onkeyup某个键盘的键被松开73.mouse [maus]鼠标74.onload某个页面或图像被完成加载75.onsubmit提交按钮被点击76.appendChild添加子节点77.removeChild删除子节点78.createElement创建元素节点79.createTextNode创建文本节点------------------------- javaweb_day0480.containeq kan'ten加容器81.row[ro]仃82.column [,kalam]歹U83.offset[Q f,szt]偏移84.hidden[,h1dn]隐藏、躲藏85.visible['viz9bl]可见的、看的见的------------------------- javaweb_day05 --------------------------------------------------86.sql 结构化查询语言(Structured Query Language)87.create[kri:'eit]创建、创造88.database ['detabes]数据库、资料库89.character [,k况rakta]字符集90.collate [ka,let]核对、校对91.show [j o]显示、说明92.drop[drap]终止、下降93.alte qb it加改变、更改94.primary[,praimeri] key主键;主关键字;主键约束;约束95.foreign[,f3ran] key外键;外键约束;约束;外健96.unique[ju,nik]唯一的、独一无二的97.auto increment 自动增长98.table[,tebl]表格99.desc降序、描述100.modify [,mndifai]修改、修饰101.change [tjein(d)3]改变、变化102.rename [rir'neim]重命名、改名103.insert into 插入104.update [A p'deit]更新、修改105.delete [di'li:t]删除106.truncate [trA^'ket]删除、截断107.select[si,lekt]查询、选择、挑选108.between...and…在... 之间109.order by 排序110.group [grurp] by 分组------------------------- javaweb_day06 -------------------------------------------------- 111.skip[skip]跳跃、跳过112.password即出s,wa:d]密码113.constraint[kan,strent]约束、限制114.reference [,refrans]参考、参照、引用115.cross join 交叉连接116.inner join 内连接117.left outer join 左外连接118.right outer join 右外连接119.transaction [tr况n'z况kjan]事务mit[ka,mit]提交、委托121.rollback[,rolb况k]回滚、回降122.serializable 可串行化的------------------------- javaweb_day07 和javaweb_day08 ----------------------------123.driver ['draiv加manager ['m况nid§加驱动管理器124.connection [ka'nekjan]连接、联系125.statement ['stetmant]申明、陈述126.ResultSet 结果集127.batch [b无5批量、批次128.execute[*ksikjut]实行;执行129.query['kwiri]询问、查询130.close[kioz]关闭、结束131.properties ['prnpatiz]属性、特性 ------------------ j avaweb_day09 132.localhost本地服务器、本地主机133.client['klaiant]客户端、客户机134.server [§-]服务器、服务端135.config[kan'fig]配置、配置文件、布局work['netw3:k]网络137.request[ri'kwest〕请求、要求138.response [ri'spnns]响应、回应、回答er agent用户客户端140.status [:s t e ta s] code 状态码141.refresh[ri'fr叮]刷新、更新142.servlet ['soviet]小服务程序143.url-pattern ['p况t^n]路径144.generiq d^i'nerik]一般的、通用的------------------------- javaweb_day10 --------------------------145.init [i'nit]初始化146.service[,s3:Vis]服务、服侍147.destroy [di'strii]销毁、消灭、148.load-on-startup 启动时加载149.context['kantzkst]环境、上下文150.resource['riS D rs]资源151.real path真实路径152.redirect [[,ri:da'rekt]]重定向、重新导向153.ContentType :内容类型154.parameter [pa'r况mIta]参数------------------------- javaweb_day11 --------------------------155.model['mDdl]模型、典型、模范156.controlleq kan'traula]控制器157.view[vju:]视图、视角、观察、风景158.dispatcher [dis'potja]调度员、转发器159.forward ['f^wad]前进、向前------------------------- javaweb_day12 --------------------------160.cookie['kuki]饼干;小甜点161.session ['sej(a)n]会话、会议 ------------------------- j avaweb_day13162.page[peid§]页、页面163.include [in'klu:d]包含、包括164.taglib标签库、标签nguage['l出ggwid§]语言、语种166.application [vpli'keij⑹n]应用、应用程序167.exception [建血加异常168.scope[skaup]范围、作用域169.items [l aItam]条目、项目170.step[step]步、脚步、步骤------------------------- javaweb_day14 ----------------------------- 171.listener「iis(a)na]监听器、听众172.filter「fiita]过滤器、过滤173.bind[baind]绑定、结合174.unbind^n'baind]解绑、解放175.passivate ['p,siveit]钝化176.activate [',ktiveit]活化、激活177.chain [tjein]链、枷锁178.filter-chain 过滤器链------------------------- javaweb_day15 ----------------------------- 179.upload [,/p'lod]上传180.file upload 文件上传181.disk[disk]磁盘182.factory ['f,kt(a)ri]工厂183.download[daun,6ud]下载------------------------- javaweb_day16 -----------------------------1.Jquery : 一款流行的js框架2.calllback :回调3.each [itj]每个4.length [1句8]长度5.selector [sskkt加选择器6.remove [ri'muv]移除,删除7.queue [kju] 入队列,使…成为队列8.dequeue。
servlet面试题及答案

servlet面试题及答案servlet面试题及答案(一)1.Servlet执行时一般实现哪几个方法?Public void init(ServletConfig config)public ServletConfig getServletConfig()public String getServletInfo()public void service(ServletRequest request,ServletResponse response) public void destroy()2. url重写有几种方式?由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。
经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764另一种是作为查询字符串附加在URL后面,表现形式为...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99 zWpBng!-145788764这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。
为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。
3.在jsp中引用使用jsp:useBean id=" " ...scope=" "/来引用javabean.Ⅰscope的值有哪些,这些值的区别是什么?不同的jsp页面中引用javabean 时,id能否相同,如果能相同,对scope的值有什么要求?scope可以为:application|page|session|requeat这个东西就是指定ID 的有效范围。
Java请求转发和重定向的区别

Java请求转发和重定向的区别Java请求转发和重定向的区别1、请求转发:request.getRequestDispatcher(URL地址).forward(request, response)处理流程:1. 客户端发送请求,Servlet做出业务逻辑处理。
2. Servlet调⽤forword()⽅法,服务器Servlet把⽬标资源返回给客户端浏览器。
2、重定向:response.sendRedirect(URL地址)处理流程:1. 客户端发送请求,Servlet做出业务逻辑处理。
2. Servlet调⽤response.sendReadirect()⽅法,把要访问的⽬标资源作为response响应头信息发给客户端浏览器。
3. 客户端浏览器重新访问服务器资源xxx.jsp,服务器再次对客户端浏览器做出响应。
3、转发和重定向的区别:1、转发使⽤的是getRequestDispatcher()⽅法; 重定向使⽤的是sendRedirect();2、转发:浏览器URL的地址栏不变。
重定向:浏览器URL的地址栏改变。
request.getRequestDispatcher()是容器中控制权的转向,在客户端浏览器地址栏中不会显⽰出转向后的地址;服务器内部转发,整个过程处于同⼀个请求当中。
response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
这样,从浏览器的地址栏中可以看到跳转后的链接地址。
不在同⼀个请求。
重定向,实际上客户端会向服务器端发送两个请求。
所以转发中数据的存取可以⽤request作⽤域:request.setAttribute(), request.getAttribute(),重定向是取不到request中的数据的。
只能⽤session。
3、转发是服务器⾏为,重定向是客户端⾏为;4、转发是浏览器只做了⼀次访问请求。
重定向是浏览器做了⾄少两次的访问请求;5、转发2次跳转之间传输的信息不会丢失,重定向2次跳转之间传输的信息会丢失(request范围)6、RequestDispatcher是通过调⽤HttpServletRequest对象的getRequestDispatcher()⽅法得到的,是属于请求对象的⽅法。
j2ee期末练习题

J2ee 期末综合练习题一、选择题1.page 指令的(B)属性用于引用需要的包或类A. extendsB.importC. isErrorPageD. language2.下列选项中,(B )可以准确地获取请求页面的一个文本框的输入(文本框的名称为name)A.request.getParameter(name)B.request.getParameter("name")C.request.getParameterValues(name)D.request.getParameterValues("name")3.使用 response 对象进行重定向时,使用的是(C )方法。
A.getAttributeB.setContentTypeC.sendRedirectD.setAttribute4.在 Java EE 中,在 web.xml 中,有如下代码:<session-config><session-timeout>30</session-timeout></session-config>以下描述,正确的是(B )。
A.定义了默认的会话时时长,时长为 30 分钟B.可以使用HttpSession类的 getMaxInactiveInterval()方法把该值取出来C.定义了默认的会话超时时长,时长为 30 小时D.可以使用 Session类的 getMaxInactiveInterval()方法把该值取出来5.在 Http协议中用于发送大量数据的方法的是( A.A. postB. getC. putD. options6.HttpServletRequest 接口的(C .方法用于创建会话。
A. setSession()B. getContext()C. getSession()D. putSession() 7.( B)动作用于将请求发送给其他页面A. nextB. forwardC. includeD. param8.page指令的( B)属性用于引用需要的包或类A. extendsB. importC. isErrorPageD. language9.如何获取一个 Cookie[](A )。
JavaWeb中请求转发和请求重定向的区别以及使用

JavaWeb中请求转发和请求重定向的区别以及使⽤什么是请求转发?请求转发是指,服务器收到请求后,从⼀次资源跳转到另⼀个资源的操作。
请求转发的特点1.浏览器地址栏不会发⽣变化2.他们⼀次请求,服务器完成转发操作3.共享Request域中的数据4.可以转发到WEB-INF⽬录下5.不可以访问⼯程以外的资源举个例⼦:1.⼀个公司有多个部门,其中部门1(Servlet1)向客户提供了⾃⼰能够提供的服务,但是还有⼀部分服务⾃⼰提供不了,需要其他部门的服务;2.所以部门1(Servlet1)将客户的⽂件盖⼀个章,证明部门1已经提供了服务,然后将其转交(请求转发)到部门2(Servlet2);3.部门2检查部门1是否盖过章了,如果盖过章就继续向客户提供服务…;4.直到所有服务都处理完,将客户需要的数据提供给客户(即,将数据转发给客户端**[转发到某个页⾯]**);package servlet;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class Servlet1 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.servlet1先获取请求参数,看看servlet1需要做的事String username = request.getParameter("username");System.out.println(username);//.....部门1提供⾃⼰的服务//2.servlet1设置⼀个参数证明servlet1转发的请求(部门1盖⼀个章)request.setAttribute("key1", "servlet1");//3.查询servlet2的路径,(部门1将其转交给部门1)RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet2");//4.把请求和响应转发给servlet2dispatcher.forward(request, response);}}package servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class Servlet2 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//部门2查看客户需要的服务System.out.println("Servlet2查看参数: "+request.getParameter("username"));//部门2查看部门1有没有盖章,判断是否继续服务System.out.println("Servlet2查看是否有Servlet1的证明: "+request.getAttribute("key1"));//部门2处理完⾃⼰的服务,System.out.println("Servlet处理⾃⼰的业务");}}注意1.这时候如果我们将Servlet2放在WEB_INF下,那么我们就⽆法直接访问servlet2了;2.但是我们可以通过请求转发来实现访问servlet2;思考:登录功能和这种请求转发⽅法类似,我们⽆法跳过登录界⾯直接访问系统,所有我们可以⽤这种请求转发的⽅法来实现;什么是请求重定向?请求重定向:是指客户端发送请求,然后服务器告诉客户端,我给你⼀个地址,你去新的地址访问(之前的地址可能已经被废弃,或者之前的地址[Servlet]⽆法满⾜需求);第⼀种⽅案// 设置响应状态码 302 ,表⽰重定向,(已搬迁)resp.setStatus(302);// 设置响应头,说明新的地址在哪⾥resp.setHeader("Location", http://localhost:8080);第⼆种⽅案(推荐使⽤)resp.sendRedirect(http://localhost:8080);请求重定向的特点1.浏览器的地址栏会发⽣变化2.浏览器发送了两次请求,⽽不是像调⽤request的getRequestDispatcher("/a/b/c.html").forward(request, response)⽅法实现的;所以⼀共创建了两个request对象3.两个request对象不能共享域数据4.重定向不能访问WEB-INF⾥的资源,因为两次请求都是客户端发起的,客户端⽆法直接访问到WEB-INF⾥的资源5.可以访问⼯程外的资源(⽐如说调转的百度等等)什么时候使⽤请求重定向?1.浏览会记录最后⼀次请求的所有数据,客户端可以通过刷新页⾯的⽅法,重新发起最后⼀次请求;2.⽽我们在请求转发或请求重定向之前,总会处理⼀些业务;此时,如果当本次业务是对数据库,本地⽂件的增删改操作时,就需要使⽤请求重定向;为什么呢?因为,这时如果我们使⽤请求转发(整个处理业务过程就只是⼀次请求),浏览就会记录我们这次请求(操作数据库),⼀旦客户端刷新页⾯,就会执⾏(操作数据库)的请求,这时很严重的bug,我们要避免,所有就要⽤到请求重定向;1.因为我们每次操作完数据库,都会跳转到⾸页,或者数据展⽰的页⾯,所以这时我们使⽤请求重定向跳转到这个页⾯(实际是跳转到某个Servlet查询数据库中的记录,这个Servlet再跳转到数据展⽰的页⾯);2.此时浏览器记录的最后⼀次请求就是查询数据库中记录的请求了,这时我们刷新页⾯,也只是查询数据,不再是对数据库的增删改了;总结:当我们修改数据库中的数据的之后,就需要使⽤请求重定向来避免上述的问题了;到此这篇关于JavaWeb中请求转发和请求重定向的区别以及使⽤的⽂章就介绍到这了,更多相关请求转发和请求重定向内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
java Servlet请求转发和重定向

•请求转发☐请求转发是指将请求再转发到另一资源(一般为JSP或Servlet)。
此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变☐请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应RequestDispatcher rd = request.getRequestDispatcher(path);rd.forward(request,response);或request.getRequestDispatcher(path) .forward(request,response);•重定向☐重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址☐重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法相当于浏览器重新发送一个请求response.sendRedirect(path);•请求转发和重定向区别如下:☐forward()只能将请求转发给同一个Web应用中的组件,而sendRedirect()方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。
☐sendRedirect()方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用forward()方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
☐forward()方法的调用者与被调用者之间共享相同的request对象和response对象;而sendRedirect()方法调用者和被调用者使用各自的request对象和response对象,它们属于两个独立的请求和响应过程。
•使用请求对象(request)存储数据(在servlet中存,在JSP中取)request. setAttribute(“score”,score);int score=(INTEGER)request. getAttribute(“score”);☐HttpServletRequest接口的方法:public void setAttribute(String name, Object obj)public Object getAttribute(String name)public Enumeration getAttributeNames()public void removeAttribute(String name)•使用HttpSession对象存储数据HttpSession session=request.getSession();session. setAttribute(“score”,score);int score=(Integer) session. getAttribute(“score”);☐HttpSession接口的方法public void setAttribute(String name, Object obj)public Object getAttribute(String name)public Enumeration getAttributeNames()public void removeAttribute(String name)•使用ServletContext对象存储数据ServletContext context = this.getServletContext();或ServletContext context = this.getServletConfig().getServletContext();context. setAttribute(“score”,score);int score=(Integer) application. getAttribute(“score”);ServletContext接口的方法public void setAttribute(String name, Object obj)public Object getAttribute(String name)public Enumeration getAttributeNames()public void removeAttribute(String name)简单的说,HttpServletRequest共享的对象仅在请求的生存期中可被访问,使用HttpSession共享的对象仅在会话的生存期中可被访问,使用ServletContext共享的对象在应用程序的生存期中可被访问。
2014 JAVA面试题 (答案)

4. hibernate 对象有多少种状态?请具体描述每种状态的特点。 Hibernate 的 对 象 有 3 种 状 态 , 分 别 为 : 瞬 时 态 (Transient) 、 持 久 态 (Persistent) 、 脱 管 态 (Detached). 处 于 持 久 态 的 对 象 也 称 为 PO(PersistenceObject),瞬时对象和脱管对象也称为 VO(ValueObject). 瞬时态 由 new 命令开辟内存空间的 java 对象, eg.Person person=new Person("xiaoxiao","女"); 如果没有变量对该对象进行引用,它将被 java 虚拟机回收. 瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关 联关系,在 Hibernate 中,可通过 session 的 save()或 saveOrUpdate()方法将 瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转 变成持久化对象. 持久态 处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识.如果 是用 hibernate 的 delete()方法,对应的持久对象就变成瞬时对象,因数据库 中的对应数据已被删除,该对象不再与数据库的记录关联.
B. int a[10][10] = new int[][];
C. int a[][] = new int[10][10];
JAVAEEWEB高级编程期末考试复习资料

JAVAEEWEB⾼级编程期末考试复习资料(⼀)1.简述Servlet⼯作原理。
Servlet⼯作原理:Servlet运⾏在Web服务器上的Web容器⾥。
Web容器负责管理Servlet。
它装⼊并初始化Servlet,管理Servlet的多个实例,并充当请求调度器,将客户端的请求传递到Servlet,并将Servlet的响应返回给客户端。
Web容器在Servlet的使⽤期限结束时终结该Servlet。
服务器关闭时,Web容器会从内存中卸载和除去Servlet。
2.Servlet与Applet的异同.相似之处:(1)它们不是独⽴的应⽤程序,没有main()⽅法。
(2)它们不是由⽤户调⽤,⽽是由另外⼀个应⽤程序(容器)调⽤。
(3)它们都有⼀个⽣存周期,包含init()和destroy()⽅法。
不同之处:(1)Applet运⾏在客户端,具有丰富的图形界⾯。
(2)Servlet运⾏在服务器端,没有图形界⾯。
3.EJB怎样和容器交互,其组件有哪⼏种类型?n EJB通过以下三种机制与容器交互①回调⽅法:回调⽅法是EJB组件实现的,通过部署标记或在部署⽂件中声明的特定⽅法,当容器要执⾏创建EJB实例,结束事务等操作时,它将调⽤这些⽅法来通知该EJB 组件。
②EJBContext:每个EJB都会得到⼀个EJBContext对象,它是对容器的直接引⽤,通过它可以获取环境信息。
③Java命名和⽬录接⼝(JNDI):这是java平台的标准扩展,⽤于访问命名系统,如LDAP、NetWare、⽂件系统等。
n EJB组件可分为三种主要类型:①会话Bean:代表检索或存储数据以满⾜⽤户请求这样的操作;②实体Bean:代表⼀种数据集,可以访问这些数据集来满⾜⽤户请求;③消息驱动Bean:相当于⼀个实现了某些业务逻辑的异步消息接收者。
4.什么是JDBC技术?①JDBC是⼀组API,定义了⽤来访问数据源的标准Java类库,使⽤这个类库可以以⼀种标准的⽅法、⽅便地访问数据库资源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jsp中jsp:forward 与redirect区别
总结了一些区别,可以从以下几个方面来看:
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所以redirect等于客户端向服务器端发出两次request,同时也接受两次response。
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,
甚至是使用绝对URL重定向到其他站点的资源.
forward,方法只能在同一个Web应用程序内的资源之间转发请求.
forward 是服务器内部的一种操作.
redirect 是服务器通知客户端,让客户端重新发起请求.
所以,你可以说redirect 是一种间接的请求, 但是你不能说"一个请求是属于forward还是redirect "
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.
5.jsp 语法
<jsp:forward page={"relativeurl" | "<%= expression %>"} />
或者这样写:
<jsp:forward page={"relativeurl" | "<%= expression %>"} >
<jsp:param name="parametername" value="{parametervalue | <%= expression %>}" />+
</jsp:forward>
6.例子
<jsp:forward page="/servlet/login" />
<jsp:forward page="/servlet/login">
<jsp:param name="username" value="jsmith" />
</jsp:forward>
描述
<jsp:forward>标签从一个jsp文件向另一个文件传递一个包含用户请求的request对象.<jsp:forward>标签以下的代码,将不能执行.
你能够向目标文件传送参数和值,在这个例子中我们传递的参数名为username,值为scott,如果你使用了<jsp:param>标签的话,目标文件必须是一个动态的文件,能够处理参数.
如果你使用了非缓冲输出的话,那么使用<jsp:forward>时就要小心。
如果在你使用<jsp:forward>之前,jsp文件已经有了数据,那么文件执行就会出错.
属性
page="{relativeurl | <%= expression %>}"
这里是一个表达式或是一个字符串用于说明你将要定向的文件或url.这个文件可以是jsp,程序段,或者其它能够处理request对象的文件(如asp,cgi,php).
<jsp:param name="parametername" value="{parametervalue | <%= expression %>}" />+
向一个动态文件发送一个或多个参数,这个文件一定是动态文件.
如果你想传递多个参数,你可以在一个jsp文件中使用多个<jsp:param>。
name指定参数名,value指定参数值.
<jsp:forward>例子
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>test</title>
</head>
<body>
<jsp:forward page="forwardTo.jsp">
<jsp:param name="userName" value="riso"/>
</jsp:forward>
</body>
</html>
forwardTo.jsp
<%@ page contentType="text/html;charset=gb2312" %>
<!--forwardTo.jsp-->
<%
String useName=request.getParameter("userName");
String outStr= "谢谢光临!";
outStr+=useName;
out.println(outStr);
%>
redirect的例子:
譬如:client 通过XXX\index.jsp?name=gauss&pwd=123访问index.jsp,而index.jsp中有< jsp:forward page="login.jsp"/>,则在login.jsp中可以通过request.getParameter()得到name和pwd,而<%response.sendRedirect("login.jsp");%>得不到。