JSTL标签结合EL表达式——java web前端瘦身器

JSP Standard Tag Library 标准标签库:

     Model 1 开发模式采用jsp 内嵌java 代码的方式实现业务逻辑与前台页面的交互,这样虽然使得前台调用业务简单,却也导致jsp多重职责,在系统庞大的项目中,难以继续应用。Model 2则在业务逻辑manager与jsp间创建一层servlet,作为业务层与jsp显示层的桥梁,将jsp中大部分获值的java代码写到servlet中,以减轻jsp负担;但这样做也不可避免的需要在jsp中写入形似<%=user.getName() %>这样的代码获值。

     JSTL标签库的使用便可彻底代替上述java代码,以类似于html标签的形式,结合EL表达式,获取数据。

EL表达式的使用:

     使用EL表达式时无需引入任何jar包,只要jsp/servlet容器实现了J2EE1.4 、Servlet2.4、JSP2.0规范即可。

具体应用:

Servlet中doGet方法如下,分别用EL表达式获取servlet传递的不同类型数值:   

               //结构
		Group group =new Group();
		group.setName("动力节点");
		
		User user =new User();
		user.setAge(23);
		user.setGroup(group);
		user.setUserName("zhang");
		
		//map
		Map map=new HashMap();
		map.put("k1","v1");
		map.put("k2", "v2");
		request.setAttribute("map", map);
		request.setAttribute("user",user);
		
		//数组
		String[] strArray=new String[]{"a","b","c"};
		request.setAttribute("straary", strArray);
		
		//对象数组
		User[] users=new User[10];
		for(int i=0;i

EL获取字符串:

        hello(普通jsp脚本获值):<%=request.getAttribute("hello")%>
hello(el表达式获值): ${hello}
EL获取对象:【对象.属性(get方法后的串,拼成get方法)】

        
  • 结构 .进行导航 存取器
  • 姓名:${user.userName}
    年龄:${user.age}
    所属组:${user.group.name}
    EL获取map:

            
  • map

  • map.k1:${map.k1 }
    map.k2:${map.k2 }

    EL获取字符串数组:

           
  • 字符串数组

  • strArray[1]:${strarry[1] } strArray[4]:${strarry[4] }

    EL获取对象数组:

            
  • 对象数组
  • users[5].username:${users[5].username}
    EL获取List集合:

             
  • list.采用[].下标
  • userList[6].username:${userList[6].username}
    EL表达式对运算符的支持:

    	1+1=${1+1 }
    1/1=${1/1 }
    10 % 2=${10 % 2 }

    常用的jstl标签及其使用:

         使用JSTL标签不同于EL表达式可直接使用即可,JSTL使用前需将jstl.jar 和standard.jar拷贝到WEN-INF/lib包下,重启tomcat后,在相应的jsp页面采用taglib指令,引入标签库方可。

    <%@taglib uri=" http://java.sun.com/jsp/jstl/core"prefix="c"%>

    JSTL标签结合EL表达式的使用:

         对应servlet中doGet方法:

                    //普通字符串
    		request.setAttribute("hello", "helloWorld");
    		
    		//HTML字符串
    		request.setAttribute("hello","北京欢迎您!" );
    		
    		//条件控制 c:if
    		request.setAttribute("v1","10");
    		request.setAttribute("v2","2");
    		
    		//条件控制 c:choose c:when c:otherwise
    		request.setAttribute("userList", new ArrayList());
    		
    		//循环标签 c:foreach
    		Group group=new Group();
    		group.setName("动力节点");
    		
    		List userrs=new ArrayList();
    		for(int i=0; i<10;i++)
    		{
    			User userr=new User();
    			userr.setUserName("zhang"+i);
    			userr.setAge(23+i);
    			userr.setGroup(group);
    			
    			userrs.add(userr);
    		}
    		request.setAttribute("userrs",userrs);		
    		request.getRequestDispatcher("/jsp_el.jsp").forward(request, resp);

    简单输出:c:out

        
  • 采用c:out标签
  • hello使用标签: hello使用标签: hello使用标签:没有值 hello使用标签:

    c:set c:remove

        
  • c:set c:remove
  • userid:${userid} userid:${userid}
    逻辑判断标签: c:if \c:choose c:when c:otherwise

        
  • 条件控制标签 c:if
  • v1小于v2

        
  • c:choose c:when c:otherwise
  • v1 大于 v2 v1 小于 v2 没有满足条件的用户 存在用户数据
    循环标签: c:foreach

        
  • jsp脚本显示
  • 用户名 年龄 所属组 <% ListuserList=(List)request.getAttribute("userrs"); if(userList ==null || userList.size()==0){ %> 没有符合条件的数据 <% }else{ for(Iteratoriter=userList.iterator();iter.hasNext()) { Useruser=(User)iter.next(); } } %> <%=user.getUserName()%> <%=user.getAge()%> <%=user.getGrop()%>  

        
  • 循环标签 c:foreach
  • 用户名 年龄 所属组 没有符合条件的用户 ${users.userName} ${user.age} ${user.group}

    纠错标签:c:catch     

         
  • 普通java
  • <% try{ Integer.parseInt("dfadf"); }catch(NumberFormatException e){ e.printStackTrace(); } %>
       
  • c:catch
  • <%Integer.parseInt("dfadf"); %> ${msg }

    界面引入传参:    

        
  • c:import 引入某jsp页面
  • c:url c:param

  • 你可能感兴趣的:(【SSM架构】)