关于jsp和js---h5页面(1)

本文介绍了在SpringMVC框架中,如何通过ModelAndView和@ResponseBody注解返回数据到JSP和H5页面。在jsp中,可以直接通过${}获取model中的键值对,而在js中,Java对象需要转化为JSON字符串才能被接收。此外,还提到了JS和Java中全局变量的不同处理方式:JS全局变量声明时需赋值,而Java全局变量即使未赋值也会保留内存空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,在springMVC中返回是以modelAndView的形式,将数据封装到model中,此是不用考虑数据格式,一般model中放置键值对的形式,值可以直接为对象本身,此时在jsp中${}可以直接获取

2,在springMVC中如果返回实体,需要加注解@ResponseBody,一般在ajax中常用,此时data.属性可以直接取值

3,在1中如果在js中获得及使用model中的此对象,对象在java中需要转为json字符串的格式,js中才可以接收此对象

4,jsp中常用的方法:

<c:if test="${abc.mediaType==1}">
		<c:forEach items="${abc.mediaList}" var="discoveryMediasitem" end="2">
			<section class="banner" style="background-image: url(${discoveryMediasitem.mediaPath});"></section>
		</c:forEach>
		</c:if>
<c:choose>
<c:when test="${goinApiDynamicInfoVO.constellation==0}">白羊座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==1}">金牛座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==2}">双子座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==3}">巨蟹座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==4}">狮子座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==5}">处女座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==6}">天秤座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==7}">天蝎座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==8}">射手座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==9}">摩羯座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==10}">水瓶座</c:when>
<c:when test="${goinApiDynamicInfoVO.constellation==11}">双鱼座</c:when>
<c:otherwise></c:otherwise>
</c:choose>
5,js中常用方法

     展开隐藏详情:

<p class="imgInfo">${abc.content}</p>
			<a class="infoBtn" href="javascript:;">展开详情</a>

$(function(){
			var infoH = $('.imgInfo').height();
			if(infoH > 60){
				$('.infoBtn').addClass('show');
				$('.imgInfo').height(60);
			}else{
				$('.infoBtn').addClass('hide');
			}
			//如果没有评论,评论条隐藏
			var commentH = $('#commentContent');
			var commentAll = $('.comment');
			if(commentH.children('li').length==0){
				commentAll.hide();
			}
		})
.dyDetails .imgBox .infoBtn {
  display: block;
  text-align: center;
  margin: 20px auto;
  width: 100px;
  color: #ffd800;
  padding: 8px 15px;
  border: 1px solid #ffd800;
  background: url(../img/icon_03.png) no-repeat 90% center;
  background-size: 15px;
}
.dyDetails .imgBox .infoBtn img {
  width: 15px;
  margin-left: 5px;
}
.dyDetails .imgBox .infoBtn.close {
  background-image: url(../img/icon_04.png);
}
举报 删除 点赞 评论:
<div class="reportBox">
		<c:forEach items="${goinInformTypes}" var="informTypesItem">
			<a class="waves-effect waves-button" href="javascript:;" onclick="reportDynamic('${informTypesItem.id}')">${informTypesItem.description}</a>
		</c:forEach>
		<a class="cancel waves-effect waves-button" style="color: red;"
			href="javascript:;">取消</a>
	</div>
	<!-- 如果是发布动态者点三个点则弹出删除动态 -->
	<div class="deleteDynamicBox">
		<a class="waves-effect waves-button" href="javascript:;" onclick="deleteDynamic()">删除动态</a>
		<a class="cancel waves-effect waves-button" style="color: red;"
			href="javascript:;" onclick="cancelDeleteDynamic()">取消</a>
	</div>
	<!-- 删除回复或评论 -->
	<div class="deleteBox">
		<a class="waves-effect waves-button" href="javascript:;"
			onclick="deleteReply()">删除回复</a> <a
			class="cancel waves-effect waves-button" href="javascript:;"
			onclick="cancelDeleteReply()">取消</a>
	</div>
	<div class="wrapper-black"></div>
		<div class="swiper-container">
			<div class="swiper-wrapper">
			<c:if test="${goinApiDynamicInfoVO.mediaType == 1 }">
				<c:forEach items="${goinApiDynamicInfoVO.dynamicMedias}"
					var="dynamicMediasitem" end="8">
						<div class="swiper-slide"><div class="swiper-zoom-container"><img src="${dynamicMediasitem.mediaPath}"/></div></div>
				</c:forEach>
			</c:if>
			</div>
		</div>
	<script type="text/javascript" src="static/goin/js/jquery-3.1.1.min.js"></script>
	<script type="text/javascript" src="static/goin/js/waves.min.js"></script>
	<script type="text/javascript" src="static/goin/js/layer/layer.js"></script>
	<script type="text/javascript" src="static/goin/js/swiper/swiper.min.js" ></script>
	<script type="text/javascript" src="static/goin/js/common.js"></script>
	<script type="text/javascript" src="static/timeago/timeago.js"></script>
	<script type="text/javascript">
 	var ifSupport ='0';
 	var test ='123';
 	//评论id
 	var $commentId;
 	//评论者id
 	var $commenterId;
 	//回复类型,0为对评论回复,1为对回复的回复
 	var $replyType;
 	//回复id,只有对回复进行回复的时候存在
 	var $replyId;
 	//来自谁的回复
 	var $fromUid;
 	//获取词条p标签,用于插入回复内容
 	var $nReplyText;
 	//此条回复为谁回复;
 	var $fromNickname;
 	//此条回复为向谁回复;
 	var $toUidNickname;
 	//评论的li标签
 	var $commentText;
 	//取评论标签的全局变量
 	var $nReplyTextForReply;
 	//对评论的回复全局变量
 	var $replyCommentText;
 	//回复评论的rep-list变量
 	var $deleteCommentText;
	//刷新此页面,加载的函数
	 $(document).ready(
			function(){
				$("#supportImg").attr("src","static/goin/img/icon_07.png");
				 var mySupport=${myselfSupport};
					if(mySupport!=0){
						$("#supportImg").attr("src","static/goin/img/icon_08.png");
						ifSupport ='1';
					} 
			});
		//喜欢函数
		function support(userId){
			//发送异步请求
			//图标更新
			//喜欢
			if(ifSupport=='0'){
				$.ajax({
					url : "${ctx}/goin/goinApiDynamic/interface/SupportOrNot",
			    data:  {userId:userId,dynamicId:"${goinApiDynamicInfoVO.id}",type:"0"},  
				success : function(data) {
					//alert(data);
				}
			});
				$("#supportImg").attr("src","static/goin/img/icon_08.png");
	  			ifSupport='1';
  	  		var lnum = $('#likeNum').text();
  	  		var i = parseInt(lnum);
  	  		i = i+1;
  	  		$('#likeNum').text(i);
			}else{
			//不喜欢
				$.ajax({
					url : "${ctx}/goin/goinApiDynamic/interface/SupportOrNot",
			    data:  {userId:userId,dynamicId:"${goinApiDynamicInfoVO.id}",type:"1"},  
				success : function(data) {
				
				}
			});
				$("#supportImg").attr("src","static/goin/img/icon_07.png");
	  			ifSupport='0';
  	  		var lnum = $('#likeNum').text();
  	  		var i = parseInt(lnum);
  	  		i = i-1;
  	  		$('#likeNum').text(i);
			}
		}
 		//评论函数
  		function comment(type){
  			var commentContent = $("#myComment").val();
  			//动态发布者不可以给自己评论
  			if(commentContent==""|| ('${currentUserId}'== '${goinApiDynamicInfoVO.issueUserId}'&& $commentId==null) ){
  				//alert("请输入内容后再提交!")
  				if(commentContent==""){
  					layer.msg('请输入内容后再提交!');
  				}else{
  					layer.msg('主人不可评论!');
  				}
  				clearVariable();
  				$(" #myComment").val("");
  	  			$("#myComment").attr('placeholder','在这里说点什么吧');
  				return;
  			}
  			//对评论或者回复进行回复
  			if($commentId!=null){
  				$.ajax({
  	  				contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  					url : "${ctx}/goin/goinApiDynamic/interface/Comment/addReply",
  				    data:  {userId:"${currentUserId}",commentId:$commentId,content:commentContent,fromUid:$fromUid,replyType:$replyType,replyId:$replyId,myNickname:$toUidNickname,fromNickname:$fromNickname},  
  				    //dataType : 'json',
  				    type : 'POST',
  					success : function(data) {
  						//alert(data);
  						//debugger;
  						//清空全局变量
  						
  						//对于所点击的p标签插入数据,返回的data为这条回复的id,判断用户是主人还是客人
  						 if('${currentUserId}'=='${goinApiDynamicInfoVO.issueUserId}'){
  							 if(null!=$nReplyTextForReply){
  								 //对回复的回复
  								$nReplyTextForReply.append("<a id="+'replyForComment'+" href="+'javascript:;'+" onclick="+
  			  							'"replyForComment('+"'"+$commentId+"'"+','+"'"+"${currentUserId}"+"'"+','+null+",'1',"+"'"+data+"'"+','+"'"+'${goinApiDynamicInfoVO.nickname}'+"'"+','+null+')">'+
  			  							        '<p>'+
  												'<span class="me">主人回复</span>:'+commentContent+
  												'</p></a>') 
  							 }else{
  								 //对评论的回复
  								$replyCommentText.append("<div class="+'rep-list'+">"+
  										"<a id="+'replyForComment'+" href="+'javascript:;'+" onclick="+
  			  							'"replyForComment('+"'"+$commentId+"'"+','+"'"+"${currentUserId}"+"'"+','+null+",'1',"+"'"+data+"'"+','+"'"+'${goinApiDynamicInfoVO.nickname}'+"'"+','+null+')">'+
  			  							        '<p>'+
  												'<span class="me">主人回复</span>:'+commentContent+
  												'</p></a>'+
  								"</div>")
  							 }
  							
  						}else{
  							$nReplyTextForReply.append("<a id="+'replyForComment'+" href="+'javascript:;'+" onclick="+
  							'"replyForComment('+"'"+$commentId+"'"+','+"'"+"${currentUserId}"+"'"+','+null+",'1',"+"'"+data+"'"+','+"'"+'${goinApiDynamicInfoVO.nickname}'+"'"+','+null+')">'+
  									'<p>'+
  									'<span>'+$toUidNickname+'</span>:'+commentContent+
  									'</p></a>')
  							
  						} 
  						//$nReplyText.append('=======')
  						/* $(" #myComment").val("");
  			  			$("#myComment").attr('placeholder','在这里说点什么吧'); */
  						clearVariable();	
  					}
  				});
  			}else{
  				//普通的评论
  				$.ajax({
  	  				contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  					url : "${ctx}/goin/goinApiDynamic/interface/Comment",
  				    data:  {userId:"${currentUserId}",dynamicId:"${goinApiDynamicInfoVO.id}",content:commentContent,type:type},  
  				    dataType : 'json',
  				    type : 'POST',
  					success : function(data) {
  						//alert(data);
  						 $('#commentContent').append('<li class="flex">'+
  								'<div class="rep-user"><a href="findUserInfo?userId=${goinA.commenterId}"><img src="'+data.photoPath+'"height="40px"/></a></div>'+
  								'<div class="text-box">'+
  									'<p class="user-name">'+data.nickname+'<time> 刚刚</time></p>'+
  									'<a href="javascript:;" onclick='+
  									    '"replyForComment('+"'"+data.id+"'"+','+"'"+"${currentUserId}"+"'"+','+null+",'0',"+null+','+"'"+'${goinApiDynamicInfoVO.nickname}'+"'"+','+null+')">'+
  									'<p class="user-text">'+data.content+'</p></a>'+
  							'</div>'+
  							'</li>') 
  							
  							clearVariable();
  					}
  				});
  				var lnum = $('#comentCount').text();
  	  	  		var i = parseInt(lnum);
  	  	  		i = i+1;
  	  	  		$('#comentCount').text(i);
  	  	 
  			}
  			$('.comment').show();
  			$(" #myComment").val("");
  			$("#myComment").attr('placeholder','在这里说点什么吧');
  		}
 		
 		//回复的a对象
  		$(document).on("click",'.rep-list a',function(){
  			$nReplyText = $(this);
  		})
	    //回复的对象
	    $(document).on("click",'.rep-list',function(){
	    	$nReplyTextForReply = $(this);
  		})
	    //评论的li对象 
	    $(document).on("click",'.flex',function(){
	    	$commentText = $(this);
  		})
  		//评论的li对象 
	    $(document).on("click",'.flex .text-box',function(){
	    	$replyCommentText = $(this);
  		}) 
  		
  		//回复评论的rep-list 
	    $(document).on("click",'.flex .text-box .rep-list',function(){
	    	$deleteCommentText = $(this);
  		}) 
  		
		//回复函数
		function replyForComment(commentId,fromUid,commenterId,replyType,replyId,fromNickname,toUidNickname){
		//	alert(commentId,fromUid,commenterId,replyType,replyId,fromNickname,toUidNickname)
			//test='789';
			//放置全局变量的值
			//评论id
		 	$commentId=commentId;
			//来自谁的评论
		 	$fromUid = fromUid;
		 	//评论者id
		 	 $commenterId=commenterId;
		 	//回复类型,0为对评论回复,1为对回复的回复
		 	 $replyType=replyType;
		 	//回复id,只有对回复进行回复的时候存在
		 	 $replyId=replyId;
		  	//此条回复为谁回复;
		  	 $fromNickname = fromNickname;
		  	//此条回复为向谁回复;
		     $toUidNickname = toUidNickname;
		 	//判断当前用户是否是评论或回复的发起者,则弹出是否删除
		 	 if('${currentUserId}'==fromUid){
		 		deleteCommentOrReply();
		 	} else if('${currentUserId}'==commenterId || '${currentUserId}'== '${goinApiDynamicInfoVO.issueUserId}'){
		 		 //获取点击事件
				$("#myComment").attr('placeholder','对'+fromNickname+'进行回复');
				$("#myComment").focus();
		 	} 
		}
		
		//删除评论弹窗
		function deleteCommentOrReply(){
			$('.deleteBox').removeClass('moveDown');
			$('.deleteBox').addClass('show');;
			$('.deleteBox').addClass('moveUp');
			$('.wrapper-black').addClass('show');
		}
		
		//删除评论或者回复,后台请求,页面变动
		function deleteReply(){
		//	alert(test)
			//调用ajax请求后台
			//debugger;
		   $.ajax({
  				contentType: "application/x-www-form-urlencoded; charset=UTF-8",
				url : "${ctx}/goin/goinApiDynamic/interface/Comment/deleteCommentOrReply",
			    data:  {userId:"${currentUserId}",replyId:$replyId,commentId:$commentId},  
			    dataType : 'json',
			    type : 'POST',
				success : function(data) {
					//debugger;
					//判断是删除评论还是回复
					if($replyId!=null){
						//说明删除回复
					//	debugger;
						$nReplyText.remove();
						if($deleteCommentText.children('a').length==1){
							$deleteCommentText.remove();
						}
						
					}else{
					//	debugger;
						//说明删除评论,并减少评论数
						$commentText.remove();
						var lnum = $('#comentCount').text();
		  	  	  		var i = parseInt(lnum);
		  	  	  		i = i-1;
		  	  	  		$('#comentCount').text(i);
		  	  	        //如果没有评论,评论条隐藏
		  				var commentH = $('#commentContent');
		  				var commentAll = $('.comment');
		  				if(commentH.children('li').length==0){
		  					commentAll.hide();
		  				}
					}
					clearVariable();
				}
			});
		   cancelDeleteReply();
		}
		//取消删除回复
		function cancelDeleteReply(){
		$('.deleteBox').removeClass('moveUp');
			$('.deleteBox').addClass('moveDown');
			$('.deleteBox').removeClass('show');
			$('.wrapper-black').removeClass('show')
		}
		
		function clearVariable(){
			 //评论id
  	  	 	$commentId=null;
  	  	 	//评论者id
  	  	   $commenterId=null;
  	  	 	//回复类型,0为对评论回复,1为对回复的回复
  	  	 	$replyType=null;
  	  	 	//回复id,只有对回复进行回复的时候存在
  	  	 	$replyId=null;
  	  	 	//来自谁的回复
  	  	    $fromUid=null;
  	  	 	//获取词条p标签,用于插入回复内容
  	  	 	$nReplyText=null;
  	  	 	//此条回复为谁回复;
  	  	 	$fromNickname=null;
  	  	 	//此条回复为向谁回复;
  	  	 	$toUidNickname=null;
  	  	 	//评论的li标签
  	  	 	$commentText=null;
  	  	 	//插入的回复标签
  	  	    $nReplyTextForReply =null;
  	  	 	//删除的标签
  	     	$nReplyText=null;
  	  	 	//对评论回复的标签
  	     	$replyCommentText=null;
  	  		//删除评论的回复中rep-list
  	     	$deleteCommentText=null;
		}
		//举报函数:
		function reportDynamic(informId){
			//alert(informId)
			$.ajax({
  				contentType: "application/x-www-form-urlencoded; charset=UTF-8",
				url : "${ctx}/goin/goinApiDynamic/interface/reportDynamic",
			    data:  {userId:"${currentUserId}",informId:informId,dynamicId:"${goinApiDynamicInfoVO.id}"},  
			    type : 'POST',
				success : function(data) {
					//debugger;
					layer.msg('已举报该内容');
				}
			});
		}
		//判断是删除动态还是举报动态
		$('.report a').on('click',function(){
			if('${currentUserId}' == '${goinApiDynamicInfoVO.issueUserId}'){
				//则弹出删除框
				$('.deleteDynamicBox').removeClass('moveDown');
				$('.deleteDynamicBox').addClass('show');;
				$('.deleteDynamicBox').addClass('moveUp');
				$('.wrapper-black').addClass('show');
			}else{
				//弹出举报框
				$('.reportBox').removeClass('moveDown');
				$('.reportBox').addClass('show');;
				$('.reportBox').addClass('moveUp');
				$('.wrapper-black').addClass('show');
			}
		})
			//取消删除动态
		function cancelDeleteDynamic(){
		$('.deleteDynamicBox').removeClass('moveUp');
			$('.deleteDynamicBox').addClass('moveDown');
			$('.deleteDynamicBox').removeClass('show');
			$('.wrapper-black').removeClass('show')
		}
		//删除动态函数
		function deleteDynamic(){
			 $.ajax({
  				contentType: "application/x-www-form-urlencoded; charset=UTF-8",
				url : "${ctx}/goin/goinApiDynamic/interface/deleteDynamic",
			    data:  {userId:"${currentUserId}",dynamicId:"${goinApiDynamicInfoVO.id}"},  
			    type : 'POST',
				success : function(data) {
					debugger;
					layer.msg('已删除此动态');
					//页面返回
					window.location.href="dynamic_detail_back"; 
				}
			});
			cancelDeleteDynamic();
		}
主要的js方法:

    js与java不同,js声明全局变量需要赋值,否则方法释放后,全局变量就没有值了,但是java可以不赋值,即使方法释放,全局变量仍保存值,可以认为js声明全局变量时没有赋予内存空间,但是java有赋予内存空间

获取点击事件的对象//回复评论的rep-list 
	    $(document).on("click",'.flex .text-box .rep-list',function(){
	    	$deleteCommentText = $(this);
  		}) 
a标签绑定点击事件:
<a class="waves-effect waves-button" href="javascript:;"
			onclick="deleteReply()">删除回复</a>
获取数据自增:
var lnum = $('#comentCount').text();
  	  	  		var i = parseInt(lnum);
  	  	  		i = i+1;
  	  	  		$('#comentCount').text(i);
ajax,在返回值为字符串非对象时不要加json:
$.ajax({
  	  			contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  				url : "${ctx}/goin/goinApiDynamic/interface/Comment/addReply",
  			        data:  {userId:"${currentUserId}",commentId:$commentId,content:commentContent,fromUid:$fromUid,replyType:$replyType,replyId:$replyId,myNickname:$toUidNickname,fromNickname:$fromNickname},  
  				    //dataType : 'json',
  				    type : 'POST',
  				    
a标签按钮置灰:
$('#joinAct').attr('href','javascript:return false;'); 
					$('#joinAct').attr('style','opacity: 0.2;'); 
					$('#joinAct').text('已报名');
在指定元素的前后加元素:
var count = $('.headerlist').children('li').length;
						if(count<4){
							$(".headerlist li").eq(count-1).before('<li><img src="'+data+'" width="30px" height="30px"/></li>');
						}
在元素的内部加元素:
$nReplyTextForReply.append("<a id="+'replyForComment'+" href="+'javascript:;'+" onclick="+
  							'"replyForComment('+"'"+$commentId+"'"+','+"'"+"${currentUserId}"+"'"+','+null+",'1',"+"'"+data+"'"+','+"'"+'${goinApiDynamicInfoVO.nickname}'+"'"+','+null+')">'+
  									'<p>'+
  									'<span>'+$toUidNickname+'</span>:'+commentContent+
  									'</p></a>')
提示信息:
layer.msg('请输入内容后再提交!');

success : function(data) {})

日期格式化:<time>
<fmt:formatDate
	value="${goinApiDynamicCommentAndReplyVOsItem.createDate}" pattern="yyyy/MM/dd" />
</time>








### 开发移动端记录展示页面的技术方案 #### 1. 使用 JSP HTML5 的基本架构 JSP(JavaServer Pages)是一种服务器端技术,用于动态生成网页内容。HTML5 是现代 Web 前端的基础标准之一,支持丰富的多媒体功能更灵活的语义化标签结构。为了实现移动端友好的记录展示页面,可以结合两者的优势。 在服务端使用 JSP 处理业务逻辑并渲染初始页面,在客户端利用 HTML5 提供的功能优化用户体验[^1]。以下是具体的实现思路: - **JSP 后端处理** 在 JSP 文件中编写 Java 脚本片段,查询数据库中的记录数据并通过 `<c:forEach>` 或其他模板语法将其嵌入到 HTML 中。 - **HTML5 客户端呈现** 利用 HTML5 的新特性(如 `meta viewport` 控制缩放比例),确保页面能够在不同尺寸的移动设备上正常显示。 ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>记录展示</title> <!-- 设置视口 --> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> body { font-family: Arial, sans-serif; } .record-item { margin-bottom: 10px; padding: 10px; border: 1px solid #ccc; background-color: #f9f9f9; } </style> </head> <body> <h1>记录列表</h1> <div id="records-container"> <%-- 动态生成记录 --%> <% String[] records = {"记录1", "记录2", "记录3"}; for (String record : records) { %> <div class="record-item"><%= record %></div> <% } %> </div> </body> </html> ``` --- #### 2. 实现响应式布局 为了让页面适应各种屏幕大小,需引入 CSS 媒体查询以及弹性盒子模型(Flexbox)。这可以通过外部样式表或内联样式定义。 ```css /* 样式调整 */ @media only screen and (max-width: 768px) { h1 { font-size: 24px; } .record-item { flex-direction: column; } } .container { display: flex; justify-content: center; } ``` 通过媒体查询检测用户的设备宽度,并针对特定范围内的分辨率应用不同的样式规则[^1]。 --- #### 3. 数据绑定与交互增强 如果需要进一步提升用户体验,可以在前端加入 JavaScript 来实现实时更新或其他复杂操作。例如,当用户点击某条记录时弹出详情对话框。 对于简单的键值对形式的数据传递,可以直接附加 URL 参数;而对于较复杂的对象,则推荐 JSON 序列化的传输方法[^4]。 ```javascript function showDetails(recordId) { fetch(`/api/getRecord?id=${recordId}`) .then(response => response.json()) .then(data => alert(`ID:${data.id}, Content:${data.content}`)) .catch(error => console.error('Error:', error)); } ``` --- #### 4. Vue.js 可选扩展 虽然题目未提及框架工具,但如果允许额外依赖的话,Vue.js 将极大简化开发流程。特别是面对单页面应用场景下的条件渲染需求——即某些特殊界面无需加载通用头部脚部等内容模块的情况,可借助其内置指令完成控制[^2]。 示例代码如下所示: ```vue <!-- App.vue --> <template> <div v-if="!isLoginPage"> <nav-bar /> </div> <router-view/> </template> <script> export default { computed:{ isLoginPage(){ return this.$route.name === 'Login'; } } }; </script> ``` 此处的关键在于监听当前激活路径的变化情况,从而决定是否隐藏指定区域。 --- ### 总结 综上所述,基于 JSP H5 构建适合手机访问的记录查看入口并不困难。只需合理规划前后两端分工协作关系即可达成目标。同时考虑到实际项目可能存在的个性化定制诉求,适时采纳现代化库也是很有必要的举措之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值