HTML VS JSP

JSP:本质是servlet,需要部署到servlet容器中才能工作,  浏览器发起对JSP的请求后(也可以是服务端通过一个controller做的redirect),JSP处理请求,输出一个HTML文档到客户端

 

HTML:静态资源,浏览器接收到HTML,根据HTML网页的内容,处理标签,加载资源,渲染网页

HTML(静态资源)可以部署到CDN(自己搭建或者购买)上实现访问加速,JSP显然不能

 

-------------

用HTML替换JSP

JSP可以非常方便的对入参进行处理,具备逻辑运算能力,客户端拿到的HTML是已经根据入参处理过的

HTML只能通过脚本定义行为,可以定义document.ready.callback 加载数据,处理通过URL带来的参数

 

如果想用HTML替换JSP,可以把JSP需要处理的参数添加为URL参数,然后通过HTML的document,ready.callback进行处理,向server发AJAX请求,获取数据,填充界面

 

 ---------------------------

JSP  

很强大,里面什么都能写(java(逻辑),css,js,html),输出是HTML

 


关注脚本元素:

 

脚本元素是JSP代码中使用最频繁的元素,它是用Java写的脚本代码。所有的脚本元素均是以“<%”标记开始,以“%>”标记结束,它可以分为如下三类:声明、表达式、Scriptlet

 声明:它是一段Java代码,可以声明变量也可以声明方法

表达式:以“<%=”标记开始,以“%>”标记结尾,中间的内容为Java一个合法的表达式

Scriptlet:是以“<%”标记开始,以“%>”标记结尾的一段Java代码

 

脚本元素中出现的所有内容都必须完全遵循JAVA语法

 

----------------------

JSP practice:

1 Jsp里面应当少写声明,尤其是变量,成员变量是带有状态的,并发容易出问题,如果需要声明的方法过多,可以专门写一个xxJspServlet类进行定义,然后引入到JSP中

2  JSP VS 模板引擎? 

3 JSP里面不要写太复杂的逻辑,否则难以维护

4  spring MVC+JSP

    controller里面进行业务处理,处理好了,把值传给JSP进行数据的展示,JSP里面用EL表达式获取参数的值,如:

               reMap.put("personalOrCompany", personalOrCompany == UserType.CompanyMerchant?"2":"1");

reMap.put("merchantOrders", getMerchantOrders(userId));

reMap.put("userId", userId);

return WebResult.success("merchant.ucIndex.page",reMap,0,0);

$("#iconAvata").attr(

"src",

"<fmt:message key="USER_CDN" bundle="${cfgpts}"/>/user/avatar/queryMyAvata65/${userId}/nosrc/1?_merchant_user_id_=<%=request.getParameter("_merchant_user_id_")%>");

});

  <c:if test="${fn:length(merchantOrders) >= 1}">

<div class="fl">

<div class="orderCode">订单编号:${merchantOrders[0].orderId }</div>

<div class="orderImg"><a href="<fmt:message key="m.order.domain" bundle="${dmnpts}"/>/order/seller/detail/${merchantOrders[0].orderId}.html?_merchant_user_id_=<%=request.getParameter("_merchant_user_id_")%>" target="_blank"><img src="${merchantOrders[0].productList[0].imgUrl}" alt="" /></a></div>

<dl>

<dt><a href="<fmt:message key="m.order.domain" bundle="${dmnpts}"/>/order/seller/detail/${merchantOrders[0].orderId}.html?_merchant_user_id_=<%=request.getParameter("_merchant_user_id_")%>" target="_blank">${merchantOrders[0].productList[0].productName }</a></dt>

<dd>

<em>${merchantOrders[0].productList[0].amountYuan }</em>

<span id="ordStatus${merchantOrders[0].orderId }">${merchantOrders[0].majorDesc }</span>

<!--<c:if test="${merchantOrders[0].status == 4}"><a id="orderSucc${merchantOrders[0].orderId }" href="javascript:orderSuccess(${merchantOrders[0].orderId });" class="setFH" target="_self">标记为发货</a></c:if>-->

</dd>

</dl>

</div>

</c:if>

5 just copy, mark 自己写的线上JSP

<%@ page pageEncoding="UTF-8" %>

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ page import="com.enterprise.web.filter.RequestContext"%>

<%@ page import="com.enterprise.web.filter.RequestContext.UserType"%>

<%@ page import="com.enterprise.web.filter.EmpMerchant"%>

<%

String servletPath=null;

HttpServletRequest sourceRequest=RequestContext.getContext().getHttpRequest();

if(sourceRequest!=null){

servletPath=sourceRequest.getServletPath();

}

String merchantUserId=null;

EmpMerchant merhcant=RequestContext.getContext().getEmpMerchant();

if(merhcant!=null){

merchantUserId=merhcant.getMerchantUserId().toString();

}

%>

<html>

<head>

</head>

<script type="text/javascript">

<%UserType userType=RequestContext.getContext().getUserType();

    if(UserType.Waiter==userType&&servletPath!=null){ %>

window.top.location.href="http://enterprise.qbao.com/error.htm?initiator="+"<%=servletPath%>"+"&_merchant_user_id_="+"<%=merchantUserId%>"; 

    <%}else{%>

window.top.location.href="${pageContext.request.contextPath}/account/accessDenied.html";

<%}%>

</script>

</html>

 

 

 

 

 

 

 

猜你喜欢

转载自curious.iteye.com/blog/2240101