jsp,servlet到底是是个啥概念,另外一些跳转的能不能介绍下?

 我来答
mading314
2012-09-11 · TA获得超过863个赞
知道小有建树答主
回答量:355
采纳率:100%
帮助的人:344万
展开全部
首先,JSP和Servlet是同宗的,jsp页面要运行出来,最终都会被编译成Servlet,jsp之所以出现是因为直接用java代码实现页面标签不是那么容易,或者说要达到一个页面效果,需要编写很多java代码才行,jsp的出现就是为了解决这个问题。

开发人员可以把各自的工作重点分开,设计用户界面的可以制作jsp,设计java的可以专心开发java程序,设计好的java程序,页面人员只需要调用即可,jsp页面不用牵扯过多的java代码,这是大项目开发应该遵循的开发思路。

简单的说,jsp侧重用户界面设计,java侧重业务后台数据处理以及逻辑处理,还有数据交换等(存数据到数据库、网络通信等等)。

但jsp编译成servlet是web服务器来做的,这样也减轻了程序员的负担(一些人不善于写前台页面,一些人不善于写java代码,有了jsp,那么他们就可以很好分工了)。

在javaweb里面,页面跳转有两种方式:
1、页面重定向
response.sendRedirect(newAddress);
2、消息转发
request.getRequestDispatcher(newAddress).forward(request,response);
追问
request.getRequestDispatcher(newAddress).include(request,response)啥意思。。我不明白的是是不是在一个项目中jsp和servlet都要写?jsp是前台的servlet是后台的?
追答
request.getRequestDispatcher("a.jsp").forward(request,   response);   
request.getRequestDispatcher("b.jsp").include(request, response);
这两种写法有什么区别呢?
1、首先,getRequestDispatcher后面的参数可以是一个servlet, jsp或者html页;
2、对于forward方法,本意是让第一个页面处理request,第二个页面处理response。如果第一个页面中已经使用response进行输出了,那么只要没有flush(),forward依然可以成功,并会自动清除刚才的输出内容,但是如果第一个页面调用了flush()方法,则会报错。值得注意的是执行了forward方法调用了第二个页面之后,程序还会返回第一个页面继续执行,但是此时再使用response输出已经没有作用了。建议可以在forward语句后面加上
if(true)
return;
避免无必要的执行后面的程序。

3、include方法则不同,它是服务器端的动态加载,执行完第二个页面的程序后可以回到第一个页面继续输出,只需要注意第二个页面不应当更改response的头部信息(改了也没用)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式