JSPL练习题

知识点

JSP,EL表达式,JSTL标签

题目1(加强训练)

题干:计算1到10的阶乘

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qd8pVIK4-1569671037732)(./阶乘.jpg)]

训练目标

jsp脚本的应用

训练提示

1.实现阶乘逻辑

2.在jsp中输出结果

参考方案

1.jsp脚本
2.jsp内置输出对象

操作步骤

1.创建jsp页面,使用脚本定义阶乘的方法

2.使用脚本来执行刚才定义的方法并且把方法获取的结果通过jsp的内置对象out输出到页面上

参考答案


	<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	
	  
	    计算1~10的阶乘
	  
	  
	    <%!
	      public int factorial(int n){
	        int sum = 1;
	        for(int i=1;i<=n;i++){
	              sum=sum*i;
	            }
	        return sum;
	      }
	    %>
	  

计算1~10的阶乘

<% int result = 1; for (int i = 1; i <= 10; i++) { result = factorial(i); out.println(i+"的阶乘为:\t"+result+"
"); } %>

题目2(训练)

题干:请将字符串(“张三”,“张三”,“李四”,“王五”)存储到四大域(pageContext,request,session,ServletContext)中,要求最终展示数据的时候,并且在jsp页面中进行展示,如果4个字符串的名字在存的时候key统一定义为username

训练目标

掌握从域中存储数据和获取数据

训练提示

1.数据该通过怎样的方式进入到域中

2.往域中存数据的时候能存哪些类型的数据

3.如果在不同域中存入相同key不同value的情况下如何获取对应的值

参考方案

调用域对象的setAttribute(key,value)方法进行存值

在jsp页面中使用EL表达式进行值得获取

操作步骤

1.在jsp页面中通过脚本调用4大域对象的setAttribute(“username”,值)
2.使用el表达式 ${域.key} 获取对应的值

参考答案


	<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	
	
	    Title
	
	
	<%
	    //在域中存储数据
	    pageContext.setAttribute("username","张三");
	    request.setAttribute("username","张三");
	    session.setAttribute("username","李四");
	    application.setAttribute("username","王五");
	%>
	从域中获取值 
${pageScope.username}
${requestScope.username}
${sessionScope.username}
${applicationScope.username}
${name}
注意: 如果不跟域的范围默认从最小的域开始逐层网上查找~ `` ## 题目3(巩固训练) 题干:将若干教师对象存入ArrayList集合中,并将集合保存到request域中,最后打印第二个老师的相关信息,注意,实体类是Teacher,有name和major-subject两个属性

姓名:赵老师, 专业:javase
姓名:钱老师, 专业:javaee
姓名:孙老师, 专业:php
姓名:李老师, 专业:python



### 训练目标

使用EL表达式获取对象的属性值(包括特殊属性)

### 训练提示

1.数据该通过怎样的方式进入到域中?

2.如何获取域中存入的集合中指定元素的属性?

### 参考方案

### 操作步骤

1.需要定义Teacher类,将老师信息进行封装

2.将所有老师保存到集合中,将集合存入request域

3.使用el表达式获取集合,同时操作集合中的第2个元素,展示响应属性

### 参考答案

tearcher.jsp

<%@ page import="com.itheima.domain.Teacher" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    teacher


    <%
        ArrayList list = new ArrayList<>();
        list.add(new Teacher("赵老师","JAVASE"));
        list.add(new Teacher("钱老师","JAVAEE"));
        list.add(new Teacher("孙老师","PYTHON"));
        list.add(new Teacher("刘老师","GO"));
        request.setAttribute("list", list);
    %>
第二位老师的信息如下
姓名: ${list[1].name}
学科: ${list[1]["major_subject"]}

Teacher.java

package com.itheima.domain;

public class Teacher {
    private String name;
    private String major_subject;

    public Teacher(String name, String major_subject) {
        this.name = name;
        this.major_subject = major_subject;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMajor_subject() {
        return major_subject;
    }

    public void setMajor_subject(String major_subject) {
        this.major_subject = major_subject;
    }
}

## 题目4(综合扩展)

题干:现有一个JavaBean User对象 name属性值为张三 age属性值为20 sex属性值为1
现有需要,我需要在jsp页面中对用户信息进行页面的显示,其中sex为1代表性别女,sex为0代表性别男

现有代码模板,请完成上述功能

<%@ page import=“com.itheima.domain.User” %>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

Title <% User u = new User("张三",20,"1"); request.setAttribute("user",u); %> 现有user对象,请在下列表单中完成具体数据的填充
用户信息如下~
姓名:
年龄:


package com.itheima.domain;

public class User {
private String name;
private int age;
private String sex;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public String getSex() {
    return sex;
}

public void setSex(String sex) {
    this.sex = sex;
}

public User(String name, int age, String sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
}

}




### 训练目标

jstl的标签

### 训练提示

1.使用EL表达式获取用户相关信息

2.将相关信息在页面上做显示

3.展示性别的时候要注意了,要根据sex的值做判断,0代表男,1代表女,所以要在这里做区分

4.展示性别的时候要根据性别在具体的表单标签上显示 支持else的逻辑么?如果不支持我们该怎么办呢?

### 参考方案


### 操作步骤

1.将实体类和jsp页面放入具体目录中

2.在姓名和年龄对应的input标签的value属性上设置值${user.name} 和${user.age}

3.设置性别第一件事先判断是男还是女,需要借助jstl的标签,判断的标准是,0男 1女
	
		//男
	
	
		//女
	

4.如果是男,则男对应的input需要设置checked属性,如果是是女则需要将女对应的input设置checked属性
		性别为男的时候处理方式如下`
	    
	        

	



### 参考答案

show.jsp

<%@ page import="com.itheima.domain.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    Title


<%
    User u = new User("张三",20,"1");
    request.setAttribute("user",u);
%>
现有user对象,请在下列表单中完成具体数据的填充 
用户信息如下~
姓名:
年龄:

## 题目5(综合案例)

题干:现有下列数据,为方便,可以将每条数据封装到一个JavaBean中 
		Headset(int id,String brand,double price,String name,String desc)

(1,'森海塞尔',1899,'ie80','很好耳机'),
(2,'Beats',2288,'Beats Studio Wireless','装逼神器'),
(3,'森海塞尔',599,'Momentum In-Ear','还算不错的耳机'),
(4,'小米',129,'圈铁Pro','129 超高性价比'),
(5,'森海塞尔',89,'MX400 II','入门级耳机'),
(6,'森海塞尔',519999,'ORPHEUS二代','奢侈品')


需求:
	1.将数据在jsp页面上已表格的形式展示出来
	2.将展示的表格实现隔行换色的效果(奇数行红色,偶数行绿色)

效果图如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xgjzptw6-1569671037735)(./jstl.jpg)]

### 训练目标

1.使用el表达式获取值jsp上做展示

2.使用jstl的标签进行循环遍历

3.使用jstl的标签做逻辑判断


### 训练提示

1.如何使用el表达式获取指定对象的指定属性值?

2.如何使用jstl标签库中的标签进行循环遍历

3.在遍历每条数据的时候,如何使用jstl标签库中的标签进行逻辑判断

### 参考方案

### 操作步骤

1.创建list.jsp,通过脚本创建集合保存对应实体Headset数据

2.在页面中使用jstl的对获取的集合数据做循环遍历

3.嵌套表格并且把数据做对应显示

4.在循环遍历过程中判断,如果是奇数行,让对应的tr背景色变为红色,如果偶数行则变为绿色

### 参考答案

<%@ page import="java.util.ArrayList" %>
<%@ page import="com.itheima.domain.Headset" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    jstl练习题
    


<%
    ArrayList list = new ArrayList<>();
    list.add(new Headset(1, "森海塞尔", 1899, "ie80", "很好耳机"));
    list.add(new Headset(2, "Beats", 2288, "Beats Studio Wireless", "装逼神器"));
    list.add(new Headset(3, "森海塞尔", 599, "Momentum In-Ear", "还算不错的耳机"));
    list.add(new Headset(4, "小米", 129, "圈铁Pro", "129 超高性价比"));
    list.add(new Headset(5, "森海塞尔", 89, "MX400 II", "入门级耳机"));
    list.add(new Headset(6, "森海塞尔", 519999, "ORPHEUS二代", "奢侈品"));
    request.setAttribute("list", list);
%>
表格展示
编号 品牌 型号 价格 描述
${s.count} ${headSet.brand} ${headSet.name} ${headSet.price} ${headSet.desc}
${s.count} ${headSet.brand} ${headSet.name} ${headSet.price} ${headSet.desc}


## 题目7(代码修正)

题干:下面代码存在问题,导致程序出现异常,请排查错误原因并改正,改正后保证代码能够正确运行!

运行结果:
	页面显示空白,正常情况下页面应该显示4为偶数

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    if标签


<%
    request.setAttribute("number",4);
%>

    ${number}为偶数





### 训练目标

jstl在配合el表达式的时候注意事项

### 训练提示

访问jsp时看看页面源代码

### 参考方案


### 操作步骤

1.运行代码的时候右键看下源代码
2.查看讲课笔记,不要遗漏任何特殊符号~
3.jstl标签标签的test属性和el表达式之间有一个空格
4.去掉空格看看效果

### 参考答案

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    if标签


<%
    request.setAttribute("number",4);
%>
<%--请记住:jstl标签属性和el表达式之间一定不要出现空格--%>

    ${number}为偶数






tml>

训练目标

jstl在配合el表达式的时候注意事项

训练提示

访问jsp时看看页面源代码

参考方案

操作步骤

1.运行代码的时候右键看下源代码
2.查看讲课笔记,不要遗漏任何特殊符号~
3.jstl标签标签的test属性和el表达式之间有一个空格
4.去掉空格看看效果

参考答案


	<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
	
	
	    if标签
	
	
	<%
	    request.setAttribute("number",4);
	%>
	<%--请记住:jstl标签属性和el表达式之间一定不要出现空格--%>
	
	    ${number}为偶数
	
	
	

你可能感兴趣的:(JSPL练习题)