MVC,转发和重定向(小记)
MVC
model 模型 完成业务/功能的类 manager
view 视图 展示数据,接收数据 jsp,html,css,js
controller 控制器 决定调用某个model,负责跳转 servlet
开发模式
model1 jsp+javaBean model2 jsp+servlet+javaBean V c m javaBean:完成业务或功能的java类 (中间件/EJB)
转发和重定向
request. setAttribute(K,V); request. getRequestDispatcher(url). forward(request, response); response. sendRedirect(request. getContextPath()+url);
4个区别
- 转发是服务器内部执行
重定向服务器发送url到浏览器,浏览器修改地址栏的url重新发送请求到服务器 - 转发地址栏不变
重定向地址始终是最终的url - 转发可以使用request保存数据setAttribute重定向不能使用request保存数据
- 转发url不需要项目目录开头
重定向需要使用项目目录开头
转发
index.jsp
<a href="${pageContext.request.contextPath}/r1.jsp?fid=5&sid=10">转发:r1-->r2-->result.jsp</a>
r1.jsp
request.setAttribute("kkk", "来自r1的信息");
request.getRequestDispatcher("/r2.jsp?tid=r200").forward(request, response);
r2.jsp
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
request.setAttribute("hhh", "来自r2的信息");
request.getRequestDispatcher("/result.jsp?oid=400").forward(request, response);
result.jsp
<body>
<h1>result</h1>
1.index : ${
param.fid}<br/>
2.index : ${
param.sid}<br/>
3.r1 | d1 : ${
param.tid}<br/>
4.r2 | d2: ${
param.oid}<br/>
<hr/>
5.r1 | d1 的kkk : ${
kkk}<br/>
6.r2 | d2 的hhh : ${
hhh}
</body>


重定向
index.jsp
<a href="${pageContext.request.contextPath}/d1.jsp?fid=51&sid=11">重定向: d1-->d2-->result.jsp</a>
d1.jsp
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
request.setAttribute("kkk", "来自d1的信息");
response.sendRedirect(path + "/d2.jsp?tid=r201");
%>
d2.jsp
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
request.setAttribute("hhh", "来自d2的信息");
response.sendRedirect(path+"/result.jsp?oid=401");
%>
result.jsp
<body>
<h1>result</h1>
1.index : ${
param.fid}<br/>
2.index : ${
param.sid}<br/>
3.r1 | d1 : ${
param.tid}<br/>
4.r2 | d2: ${
param.oid}<br/>
<hr/>
5.r1 | d1 的kkk : ${
kkk}<br/>
6.r2 | d2 的hhh : ${
hhh}
</body>


注意
a标签,form表单提交,添加,修改,删除都是重定向
用转发的话,例:添加完用户后地址栏不变,刷新会重复添加
前端+后台(url接口)

jsp页面 跳转到列表页面
<li> <a href="<%=path%>/admin/kind/kindthirdB_list.jsp">三级分类ajax前端后台</a></li>

本文介绍了MVC模式在Java Web开发中的应用,包括控制器如何进行转发和重定向。详细阐述了两者的区别,如转发在服务器内部执行,地址栏不变,而重定向涉及浏览器重新发送请求,地址栏显示最终URL。同时,讨论了前端与后台的交互,特别是在列表页面使用Ajax获取JSON数据,并通过Servlet实现三级分类的添加功能。
最低0.47元/天 解锁文章
766

被折叠的 条评论
为什么被折叠?



