JSP(期末题库)

20200324第一章小测

1.(web-1)不是JSP运行必须的是()

A.操作系统

B.Java JDK

C.支持JSP的Web服务器

D.数据库

2.(web-1)Tomcat服务器的默认端口是()

参考答案 8080

3.(web-1)本地服务器地址可以用()或()表示

参考答案 localhost

参考答案 127.0.0.1

4.(web-1)B/S是指()

参考答案 浏览器/服务器

5.(web-1)C/S是指()

参考答案 客户机/服务器

20200325上机作业

1.(web-2)设计一个登录表单,根据用户登录信息的不同转发到不同的页面(如登录成功或登录失败等页面)

【主页面:index.jsp】

<body>
    <form action="login.jsp" method="post">
        <table>
            <tr>
                <td>账号:</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td><input type="submit" value="登录"></td>
            </tr>         
        </table>
    </form>
</body>

【表单处理页面:login.jsp】

<%
    String username=request.getParameter("username");
    String password=request.getParameter("password");
    if(username.equals("root")&&password.equals("root")){
        %><jsp:forward page="success.jsp"/><% 
    }else{
        %><jsp:forward page="error.jsp"/><% 
    }
%>

【成功界面:success.jsp】

<body>
    <h1>登录成功</h1>
</body>

【失败界面:error.jsp】

<body>
<h1>登录失败</h1>
</body>

2.(web-2)两种include方式实现加减乘除(或者其他主题也可以,请在作业中用文字说明)

【主页面:index.jsp】

<body>
<%@ include file="nav.jsp" %>
<jsp:include page="main.jsp" />
<%@ include file="footer.jsp" %>
</body>

【导航栏:nav.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<nav>
    <ul>
        <li><a href="">首页</a></li>
        <li><a href="">新品</a></li>
        <li><a href="">生日</a></li>
        <li><a href="">儿童</a></li>
        <li><a href="">聚会</a></li>
        <li><a href="">活动专区</a></li>
    </ul>
</nav>

【底部:footer.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<footer>
    <a href="">联系我们</a>
    <span>|</span>
    <a href="">订购帮助</a>
    <span>|</span>
    <a href="">企业合作</a>
    <span>|</span>
    <a href="">生产经资质</a>
    <span>|</span>
    <a href="">公告专区</a>
</footer>

【主要内容:main.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta charset="UTF-8">
<div class="main">
    <p>动态包含的主要内容~</p>
    <p>动态包含的主要内容~</p>
    <p>动态包含的主要内容~</p>
    <p>动态包含的主要内容~</p>
    <p>动态包含的主要内容~</p>
</div>

【样式:main.css】

@charset "UTF-8";
nav ul{
    padding: 0 0;
}
nav ul li{
    list-style-type: none;
    float:left;
    margin-right: 10px;
}
.main{
    clear: both;/*清除所有浮动*/
}

20200331课前小测

1.(web-3)JSP从HTML表单中获得用户输入的正确语句为()

A.request.getParameter(“ID”)

2.(web-2)JSP的编译指令标记通常是指:( )

A.page指令、include指令和taglib指令

3.(web-2)以下动作标识用来实现页面跳转的是()

C.forwar

20200401-JSP内置对象-小测

1.(web-4)要创建一个全站都可访问的属性,应该使用JSP内置对象中的( )对象。

A.response

B.page

C.session

D.application

2.(web-3)JSP的内置对象中()对象可对客户的请求作出动态响应,向客户端发送数据。

A.response

B.page

C.application

D.out

3.(web-3)页面的转发和重定向没有区别。

参考答案 错

4.(web-4)当需要在多个页面保留用户的信息时,应该使用()对象。

参考答案 session

5.(web-4)请按照由短到长的顺序写出request对象、session对象和application对象中数据的生存周期。

参考答案 request对象 session对象 application对象

20200407-JavaBean小测

【简答题】表单内容如下:
<form action="index.jsp" method="post">
<table align="center" width="400" height="200" border="1">
<tr><td align="center" colspan="2" height="40">
<b>添加图书信息</b></td></tr>
<tr><td align="right">名称:</td>
<td><input type="text" name="name"></td>
</tr><tr><td align="right">价格:</td><td>
<input type="text" name="price">
</td></tr>
<tr><td align="right">数量:</td>
<td><input type="text" name="count"></td></tr>
<tr><td align="right">书号:</td>
<td><input type="text" name="isbnnum"></td>
</tr><tr><td align="center" colspan="2">
<input type="submit" value="添加"></td></tr>
</table></form>
(1)请根据表单内容编写对应的JavaBean类。
(2)用<jsp:setProperty>为JavaBean对象的属性赋值,图书名称为“鲁迅全集”,价格为60元。

【book.java】

public class book {
    private String name;
    private double price;
    private int count;
    private String isbnnum;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public String getIsbnnum() {
        return isbnnum;
    }
    public void setIsbnnum(String isbnnum) {
        this.isbnnum = isbnnum;
    }    
}

【add.jsp】

<body>
    <%request.setCharacterEncoding("UTF-8"); %>
    <jsp:useBean id="produce" class="my.model.book"></jsp:useBean>
    <jsp:setProperty property="name" name="produce"value="鲁迅全集"/>
    <jsp:setProperty property="price" name="produce"value="60"/>
    <jsp:setProperty property="count" name="produce"value="34"/>
    <jsp:setProperty property="isbnnum" name="produce" value="nb2345"/> 
    <ul>
        <li>名称:<jsp:getProperty property="name" name="produce"/></li>
        <li>价格:<jsp:getProperty property="price" name="produce"/></li>
        <li>数量:<jsp:getProperty property="count" name="produce"/></li>
        <li>书号:<jsp:getProperty property="isbnnum" name="produce"/></li>
    </ul>
</body>

20200408上机作业

1.(web-5) 编写一个封装各类(主题可自定)信息的JavaBean,在页面中调用该JavaBean的对象,并将信息输出在页面中。可在例子中使用JavaBean的不同Scope。

【my.modle/Produce.java】

package my.model;
public class Produce {
    private String name;
    private double price;
    private int count;
    private String factoryAdd;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public String getFactoryAdd() {
        return factoryAdd;
    }
    public void setFactoryAdd(String factoryAdd) {
        this.factoryAdd = factoryAdd;
    }    
}

【login.jsp】

<body>
    <form action="index.jsp" method="post">
        <table align="center" width="400" height="200" border="1">
            <tr>
                <td colspan="2" height="40"><b>添加产品信息</b></td>
            </tr>
            <tr>
                <td align="right">名称:</td>
                <td><input type="text" name="name2"></td>
            </tr>
            <tr>
                <td align="right">价格:</td>
                <td><input type="text" name="price2"></td>
            </tr>
            <tr>
                <td align="right">数量:</td>
                <td><input type="text" name="count"></td>
            </tr>
            <tr>
                <td align="right">地址:</td>
                <td><input type="text" name="factoryAdd"></td>
            </tr>
            <tr>
                <td align="center" colspan="2" height="40"><input type="submit"></td>
            </tr>
        </table>
    </form>
</body>

【index.jsp】

<body>
<%request.setCharacterEncoding("UTF-8"); %><!-- 让服务器传过来的request能识别中文 -->
<jsp:useBean id="produce" class="my.model.Produce"></jsp:useBean>
<jsp:setProperty property="*" name="produce"/><!-- 表单的属性名和JavaBean的属性名相同 -->
<jsp:setProperty property="price" name="produce"  param="price2"/><!-- param令表单中的price2就JavaBean中price -->
<jsp:setProperty property="*" name="produce"/><!-- 有一个就够了,这个没有用 -->
<jsp:setProperty property="factoryAdd" name="produce" value="北京"/>

<div>
    <ul>
        <li>商品名称:<jsp:getProperty property="name" name="produce"/></li><!-- form中为name2,结果NULL -->
        <li>价格:<jsp:getProperty property="price" name="produce"/></li><!-- form中为price2,结果正确 -->
        <li>数量:<jsp:getProperty property="count" name="produce"/></li><!-- form中为count,结果正确(推荐) -->
        <li>厂址:<jsp:getProperty property="factoryAdd" name="produce"/></li><!-- 结果为 北京 -->
    </ul>
</div>
</body>

【bean/CounterBean.java】

package bean;
//JSP中使用JavaBean,要求这个Bean放在包里面。
import java.io.Serializable;
public class CounterBean implements Serializable {
    private int count = 0;
    public CounterBean() {}
    public int getCount() {
        count++;
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
}

【PageBean.jsp】

<body>
    <h3>CounterBean scope="page" Example</h3>
    <b>count:</b> <%= counterBean.getCount()%>
    <%--上下两句效果一样--%>
    <br>
    <b>count:</b> <jsp:getProperty name="counterBean" property="count"/>
</body>

20200415-Servlet小测

1.Servlet是运行在客户端的程序。

参考答案 错

2.定义Servlet时,它的父类是()

参考答案 HttpServlet

3.如果想在Servlet中创建一个被所有用户共享的对象,那么该对象的类型是()

参考答案 ServletContext

4.Servlet的初始化方法是()

参考答案 init()

5.在web容器中,一个Servlet的实例有( )个。

参考答案 一

6.如果表单提交请求的方式为post,那么Servlet中处理请求的方法为()

参考答案 doPost()

7.有如下Servlet定义:

@WebServlet("/My/Pd/AddServlet")
public class HelloWorldServlet extends HttpServlet{...}

那么如果有一个表单,提交后跳转到该Servlet,那么表单的action的值应该写为()

参考答案 “My/Pd/AddServlet”

20200421-Servlet综合练习

【简答题】 (100分)
(web-6) Servlet综合练习
编写一个表单,表单中包含图书的信息(内容自定,必须包含价格)
在Servlet中对图书的信息进行处理,如果价格大于50,则打八折;如果价格低于50,则打九折。将图书信息及打折后的信息在转发后的页面中显示给用户。
如果图书信息不合法(自定,如价格小于0或者大于1000),则重定向到输入页面。

【index.jsp】

<form action="MyServlet" method="post">
    <table>
        <tr>
            <td>书名</td><td><input type="text" name="bookName"></td>
        </tr>
        <tr>
            <td>价格</td><td><input type="text" name="price"></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="查询"></td>
        </tr>
    </table>
</form>

【view.jsp】

<table border="1">
        <tr>
            <td>书名:</td><td><%=request.getParameter("bookName") %></td>
        </tr>
        <tr>
            <td>原本价格:</td><td><%=request.getParameter("price") %></td>
        </tr>
        <tr>
            <td>折后价格:</td><td><%=request.getAttribute("discount") %></td>
        </tr>
</table>

【MyServlet.java】

import java.io.IOException;
import java.text.DecimalFormat;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MyServlet
 */
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public MyServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//        request.setCharacterEncoding("utf-8");
//        response.setContentType("text/html");

        String bookName=request.getParameter("bookName");
        double price=Integer.valueOf(request.getParameter("price"));
        String discount="";
        DecimalFormat df=new DecimalFormat("#.00");

        if(price<0||price>1000) {
            //重定向
            response.sendRedirect("index.jsp");
        }else{
            if(price>50&&price<=1000) {
                discount=df.format(price*0.8);
            }else if(price>=0&&price<50) {
                discount=df.format(price*0.9);
                System.out.println(discount);
            }
            //转发
            request.setAttribute("discount", discount);
            request.getRequestDispatcher("/view.jsp").forward(request, response);
        }
    }
}

【过滤器:CharactorFilter.java】


import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

// 字符编码过滤器
@WebFilter(filterName="CharactorFilter",urlPatterns = "/*")//urlPatterns指定过滤器对谁起作用,/*表示全部
//@WebInitParam指定初始化的参数
public class CharactorFilter implements Filter {
    // 字符编码
    public  void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        // 设置request的编码格式    
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        // 传递给下一过滤器
        chain.doFilter(request, response);
    }

    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

20200422-cookie和过滤器小测

1.(web-6) cookie文件是文本文件。

参考答案 对

2.(web-6)cookie文件可以携带病毒。

参考答案 错

3.(web-6)cookie和session一样,都是存储在服务器端的信息。

参考答案 错

4.(web-6)获取cookie的名字应该用()方法。

参考答案 getName()

5.(web-6)()方法可以设置cookie的存活时间。

参考答案 setMaxAge()

6.(web-6)cookie的存储形式是()

参考答案 名-值对

7.(web-6)用注解方式定义了三个过滤器,分别是MyFilter,CountFilter和DBFilter,请写出这三个过滤器的执行顺序。

参考答案 CountFilter,DBFilter,MyFilter

8.(web-6)定义servlet过滤器类需要实现()接口,在该接口中有()方法需要实现。

参考答案 Filter

参考答案 doFilter()

9.(web-6)写入cookie的方法是()

参考答案 addCookie()

20200426-EL课前小测

1.(web-7) EL表达式的基本语法结构为()

参考答案 ${表达式}

2.【简答题】

(web-7)有如下代码:
<%Map<String,String> animal = new HashMap<String,String>();
    animal.put("1","cat");
    animal.put("2","sheep");
    animal.put("3","dog");
    application.setAttribute("animals",animal);
%>
如果需要在页面中得到sheep,EL表达式该如何表示?

参考答案 ${applicationScope.animals[“2”]}

3.【简答题】

(web-7)有如下代码:
<%List<String> citys2 = new ArrayList<String>();
    citys2.add("beijing");
    citys2.add("jinan");
    citys2.add("shanghai");
    session.setAttribute("citys",citys2);
%>
如果想得到jinan,那么EL表达式该如何表示?

参考答案 ${sessionScope.citys[1]}

20200429-上机作业-单号

1.使用cookie实现购物车的功能:判断购物车是否有该商品,如果有,就不必重复加入;如果没有,则加入该商品。(与课堂所讲例子类似,依然是读写cookie,就是在cookie中存放的数据是商品列表了)

【default package/ShoppingServlet.java】

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;

/**
 * Servlet implementation class ShoppingServlet
 */
@WebServlet("/ShoppingServlet")
public class ShoppingServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ShoppingServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html");

        String name=request.getParameter("name");
        boolean flag=true;

        HttpSession session=request.getSession();
        ArrayList list=null;
        list=(ArrayList)session.getAttribute("list");

        if(list==null) {
            list=new ArrayList();
            list.add(name);
            session.setAttribute("list", list);
        }else {
            list.add(name);
            list=new ArrayList(new HashSet(list));
            session.setAttribute("list", list);
        }
        response.sendRedirect("index.jsp");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
}

【index.jsp】

<body>
<%
    ArrayList list=(ArrayList)session.getAttribute("list");
%>
<form action="ShoppingServlet">
    <p>请输入你要购买的商品:</p>
    <input type="text" name="name">
    <input type="submit" value="提交">
    <br>
    <br>
    <table border="1">
        <c:forEach var="name" items="${list}">
            <tr><td><c:out value="${name}"></c:out></td></tr>
        </c:forEach>
    </table>
</form>
</body>

2.使用<c:choose>标签将百分制成绩转化为等级制成绩。

<body>
    <c:set var="score" >79</c:set>
    <c:choose>
        <c:when test="${score>=90}">优秀</c:when>
        <c:when test="${score>=80}">良好</c:when>
        <c:when test="${score>=70}">一般</c:when>
        <c:when test="${score>=60}">及格</c:when>
        <c:otherwise>不及格</c:otherwise>
    </c:choose>
</body>

3.使用JSTL输出数组中的偶数。

<body>
    <%
        int a[]={1,2,3,4,5,6,7,8,9,10};
        request.setAttribute("a",a);
    %>
    <c:forEach var="num" items="${a}">
        <c:if test="${num%2==0}"><c:out value="${num}"></c:out><br></c:if>
    </c:forEach>
</body>

4.题目:在表单中输入学生信息(学号、姓名、各门课成绩),在页面中按照总分从高到低排序输出。如果输入的内容不符合要求(具体要求自定),跳转到错误页面。(参照课堂例子用Servlet实现)

【index.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="my.pack.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function check(form){
    with(form){
        if(name.value==""){
            alert("姓名不能为空");
            return false;}
        if(id.value==""||id.value==0){
            alert("学号不能为空");
        return false;}
        if(chinese.value==""||chinese.value==0){
            alert("语文成绩不能为空");
            returnfalse;}
        if(math.value==""||math.value==0){
            alert("数学成绩不能为空");
            returnfalse;}
        if(english.value==""||english.value==0){
            alert("英语成绩不能为空");
            returnfalse;}
    }
}
</script>
</head>
<body>
<form action="GradeServlet" method="post" onsubmit="return check(this);">
    <table>
        <tr>
            <td>姓名</td>
            <td><input type="text" name="name"></td>
        </tr>
        <tr>
            <td>学号</td>
            <td><input type="text" name="id"></td>
        </tr>
        <tr>
            <td>语文成绩</td>
            <td><input type="text" name="chinese"></td>
        </tr>
        <tr>
            <td>数学成绩</td>
            <td><input type="text" name="math"></td>
        </tr>
        <tr>
            <td>英语成绩</td>
            <td><input type="text" name="english"></td>
        </tr>
        <tr>
            <td>提交</td>
            <td><input type="submit" value="添加"></td>
        </tr>    
    </table>
</form>

<table>
<%    
    request.setCharacterEncoding("UTF-8"); 
    List<Student> lt=(List<Student>) application.getAttribute("students");
    if(lt!=null){
        Collections.sort(lt,new Comparator<Student>(){
            @Override
            public int compare(Student s1,Student s2){
                if (s1.getSum()>s2.getSum()){
                    return -1;
                }else if(s1.getSum()<s2.getSum()){
                    return 1;
                }else{
                    return 0;
                }
            }
        });

        for(Student student:lt){
%>
    <tr>
        <td>姓名:<%=student.getName()%></td>
        <td>&emsp;学号:<%=student.getId()%></td>
        <td>&emsp;语文成绩:<%=student.getChinese()%></td>
        <td>&emsp;数学成绩:<%=student.getMath()%></td>
        <td>&emsp;英语成绩:<%=student.getEnglish()%></td>
        <td>&emsp;总分:<%=student.getSum()%></td>
    </tr>
<%}}%>    
</table>
</body>
</html>

【my.pack/Student.java】

package my.pack;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class GradeServlet
 */
@WebServlet("/GradeServlet")
public class GradeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public GradeServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html");

        String name=request.getParameter("name");
        int id=Integer.parseInt(request.getParameter("id"));
        double chinese=Double.parseDouble(request.getParameter("chinese"));
        double math=Double.parseDouble(request.getParameter("math"));
        double english=Double.parseDouble(request.getParameter("english"));

        double sum=chinese+math+english;
        Student student=new Student();
        student.setName(name);
        student.setId(id);
        student.setChinese(chinese);
        student.setMath(math);
        student.setEnglish(english);
        student.setSum(sum);

        ServletContext application=getServletContext();
        List<Student> lt=(List<Student>) application.getAttribute("students");
        if(lt==null){
            lt=new ArrayList<Student>();
        }
        lt.add(student);
        application.setAttribute("students",lt);
        request.getRequestDispatcher("/index.jsp").forward(request,response);    
    }
}

【my.pack/GradeServlet.java】

package my.pack;

public class Student {
    private String name;
    private int id;
    private double chinese;
    private double math;
    private double english;
    private double sum;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public double getChinese() {
        return chinese;
    }
    public void setChinese(double chinese) {
        this.chinese = chinese;
    }
    public double getMath() {
        return math;
    }
    public void setMath(double math) {
        this.math = math;
    }
    public double getEnglish() {
        return english;
    }
    public void setEnglish(double english) {
        this.english = english;
    }
    public double getSum() {
        return sum;
    }
    public void setSum(double sum) {
        this.sum = sum;
    }
}

20200512课前小测

1.(Struts试题) struts.xml的<action>中,()属性可以配置action中要执行的方法名称。

B.method

2.(Struts试题)假设表单中有一个文本框组件,名字为username,那么Action中成员变量的名字必须与该组件名一致吗?

B.不用,如果要给username填充值的话,需要用setUsername()方法

3.(Struts试题) 不属于Action接口中定义的字符串常量的是()

A.SUCCESS

B.ERROR

C.FAILURE

D.INPUT

4.(Struts试题) MVC应用程序被分为三个核心部分:模型、()和控制器。(注意:答案写汉字)

参考答案 视图

5.编写一个Action,父类是ActionSupport,Action中包含两个属性:name(姓名)和age(年龄),execute()方法返回success。请编写该类。

public class Person {
    private String name;
    private String major;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMajor() {
        return major;
    }
    public void setMajor(String major) {
        this.major = major;
    }
}
import com.opensymphony.xwork2.ActionSupport;

public class PersonAction extends ActionSupport{
    private Person per;
    public Person getPer() {
        return per;
    }
    public void setPer(Person per) {
        this.per = per;
    }
    public String execute() throws Exception {
        return SUCCESS;
    }
}

20200520-Struts验证和Spring小测

1.Spring依赖注入的方式是()

A.基于set方法的注入

B.基于构造器的注入

C.基于get方法的注入

D.基于接口的注入

2.IOC的含义是(),也叫()

参考答案 控制反转

参考答案 依赖注入

3.以下是Action类中验证方法的部分内容,请将空格处补齐。

age代表的是年龄,password1和password2代表的是两次输入的密码。
if(age>120||age<0){
    this.______("age", "年龄不在有效范围内");
}
if(password1.equals(password2)){
    this.______("两次密码不一致");
}

参考答案 addFieldError

参考答案 addActionError

4.设Action中包含一个Person类的对象per,该Action对应的校验文件内容如下:

<validators>
    <field name="per">
        <field-validator type="visitor">
            <param name="context">Pd</param>
            <param name="appendPrefix">true</param>
            <message>用户信息:</message>
        </field-validator>
    </field>
</validators>
那么,与此对应的Person类的校验文件名字是()

参考答案 Person-Pd-validation.xml

5.假设我们编写了一个类,名字为MyUserAction,那么如果想使用xml文件对该Action中的属性进行验证的话,该xml文件的名字是()

参考答案 MyUserAction-validation.xml

6.使用Struts2框架进行验证,一种方法是自己编写Action类,这个类的父类必须是(),同时在类中需要实现()方法。

参考答案 ActionSupport

参考答案 validate

7.如果想创建一个名为hw的bean,请将beans.xml文件中横线处的内容补全。

<bean_________class="spring_01.HelloWorld">
<property name="message" value="Hello World!"/>
</bean>

参考答案 id=”hw”

8.下面是beans.xml的部分内容,请将横线处补充完整。

<bean id="customer2"
    class="spring_01.Customer">
    <property name="name" value="xiaolan"/>
    <property name="age" value="23"/>
    <property name="myschool"___________ />
</bean>

<bean id="mysch" class="spring_01.School">
    <property name="name" value="山东交大"/>
</bean>

参考答案 ref=”mysch”

9.以下代码片段是spring框架从spring_bean.xml中读取配置信息,找到id为myworld的Bean。请将空白处补全。

public class MainApp {
    public static void main(String[] args) {
        ApplicationContext context =
        new ClassPathXmlApplicationContext(________(1)________);
        HelloWorld obj = (HelloWorld) context.getBean(________2________);
        obj.printMessage();
    }
}

参考答案 “spring_bean.xml”

参考答案 “myworld”

Java 课后题

1.Web 开发技术大体上也可以被分为客户端技术和 服务端 技术两大类。

2.JRE Java程序的运行环境

3.使用JDK需要配置path和 classpath 两个环境变量。

4配置JDK时需要将java.exe的路径添加 path 环境变量中。

1.Javac位于JDK的()目录下。

A. bin

B. include

C. jre

D. lib

2.Tomcat服务器的默认端口是()

A.80

B.8080

C.3366

D. 1433

3.在ISP页面中包含各种代码,如HTML标记、css标记、JavaScript 标记、逻辑处理、数据库处理代码。这属于()开发模式。

A. JSP+JavaBean

B. J2EE 框架

C. Struts 框架

D.单一JSP

4.MVC模式中的Controller 使用()来实现。

A. Servlet

B. JSP

C. JavaBean

D. EJB

1.JSP的表达式属于页面的脚本元素

2.使用JSP表达式形式输出变量str的值,语句是<%=str%>

3.在页面指令page中的contentType属性设置页面字符集。

4.taglib指令的prefix属性可以指定自定义标签的前缀。

5.<jsp:useBean>动作用来装载一 个将在 JSP页面中使用的JavaBean。

6.<jsp:useBean>动作所对应的页面范围有page、request、 session 和application 4种

1.下列关于JSP中注释的使用,错误的是()

A. <!– <%! system.outprint(“ok”)%> ->

B. <%– system.out.print(“ok”) –%>

C. /* system.out.print(“ok”) */

D. <%=system.out.print(“ok”) %>

2.下列不属于JSP脚本元素的是()

A. <%! class Abe{}%>

B. <%=abc%>

C. <%String abc=”jsp”;%>

D.<?jsp print(abc);?>

3.下列关于page 指令的描述错误的是()

A.一个页面只允许出现一次

B.一个页面可以出现多次

C.可以放在页面任何位置

D.以上都错误

4.使用下面()指令可以在一个页面中包含多个页面。

A. page

B. include

C. taglib

D.都不行

5.下列用法中属于JSP声明的是()

A. <%java语句%>

B. <%=java 语句%>

C.<%!java语句%>

D. <%@java 语句%>

6.()动作把请求重定向到另外的页面。

A. <jsp:plugin>

B. <jsp:forward>

C. <jsp:fallback>

D. <jsp:include>

7.<jsp:param>动作不可以与下列哪个动作起使用?

A. <jsp:include>

B. <jsp:forward>

C. <jsp:useBean>

D.以上都不对

1.Out对象在ISP容器内会自动转换为java.io.PrintWriter对象

2.在空白处填写合适代码,让它运行后会输出“BC”。
out.println(“A”) ;

out.clearBuffer();

out.printin(“B”);

out.println(“C”);

out. flush() ;

3.为了避免产生乱码,将请求编码设置为GBK的代码是request.setCharacterEncoding(“GBK”)

4.下列代码的执行结果是null

 request.setAttribute ("today", "Monday");
 request. removeAttribute ("today") ;
 out.print (request .getAttribute ("today")) ;

5.response 对象是 httpServletResponse 类的一个实例

6.下列不属于JSP内置对象的是()
A. response
B. request
C. server
D. session

7.下列不属于out对象方法的是()
A. print()

B. getBufferSize()

C. isAutoFlush()

D. getClass()

8.page.equals(this)的返回值是()

A. true

B. false

C. 0

D.1

9.对于链接“index.jsp?user=hello” 要获取字符串hello可以使用代码()

A. request.getParameter(“user”)

B. out.printn(“user”)

C. out.printn(“hello”)

D. response sendRedirect(“user”)

10.假设要获取服务器的端口号可用代码()

A. request.getServerPort()

B. request.getRemoteAddr()

C. request.getServletPath()

D. request.getMethod()

6.下列不属于response 对象方法的是()

A. getCharacterEncoding()

B. getOutputStream()

C. setHeader()

D. getClass()

1.jsp中 session 对象的生命周期为用户访问过程

2.Session对象的isNew() 方法用于判断是否开始新的会话。

3.Application对象是 javax.servlet.ServletContext 类型的实例。

4.pageContext对象的getServletContext()方法可以获取 application 内置对象。

1.下列不属于JSP内置对象的是()。

A.Session。

B.Application。

C.Config

D.System。

2.释放session对象时使用的是session对象的()方法。

A.invalidate()

B.getAttribute()

C.getMaxInactiveInterval()

D.isNew()

3.下面程序执行后,页面上显示的内容是()

<%

String str="你好";

session. setAttribute ("key",str) ;

str="hello";

String says= (String) session.getAttribute ("key") ;

out.print (says) ;
%>

A.你好

B. hello

C. key

D.语句存在错误

4.使用session对象从会话中移除指定对象,应该使用()方法。

A.getAttribute()

B.invalidate()

C.removeAttribute()

D.isNew()

5.要创建一个全站都可访问的属性,应该使用JSP内置对象的()对象。

A.response。

B.page

C.Session。

D.Application。

6.Session对象的()方法用于设置会话超时。

A. getMaxInactiveInterval(100)

B. getLastAccessedTime()

C. getCreationTime()

D. setMaxInactiveInterval(100)

1.JavaBean的产生使JSP页面中的业务逻辑变得更加清晰,程序之中的实体对象机业务逻辑可以单独封装到Java类中。

2.使用JavaBean的最大优点就在于它可以提高代码的重用性,编写一个成功的Java bean宗旨为”一次性编写,任何地方执行,任何地方重用”

3.可视化javaBean就是具有 GUI图形用户界面 的JavaBean。

4.JavaBean中的属性应该设置为 私有类型(private),可以防止外部直接访问。

5.一个Bean由三部分组成:实现iava. io. sializablea接口、提供无参数的构造方法、提供getter()和setter()

6.JavaBean应该直接或间接实现 java.io.Serializable 接口,以支持序列化机制。

1.在JavaBean 规范中类的属性需要使用()修饰符来定义。

A. public

B. private

C.protected

D. friendly

2.下列选项中不属于JavaBean的属性的是()

A. Simple

B. Indexed

C. Bound

D. Complicated

3.设置JavaBean 属性值使用的是()标签。

A. <jsp:useBean>

B. <jsp:setProperty>

C. <jsp:getProperty>

D.上述三个标签都可以

4.下列关于JavaBean的4种作用域范围叙述中错误的是()

A. page作用城不仅是在当前JSP页面内有效,在整个服务器中都有效

B. request的作用域范围的JavaBen对象存储在当前Seleqesq,有request 范围的JavaBen实例可以在处理请求所有JSP页面中都存在

C.session 作用域范围的JavaBean将JavaBean对象存储在HTTP会话中

D. application 作用域范围的JavaBean对所有的用户和所有页面都起作用,只需创建一一次,而且将会存在于Web应用程序执行的整个过程中.

5.<jsp:useBean>标签的 scope 属性不可以设置为()

A. out

B. session

C. request

D. application

6.某JSP程序中声明使用JavaBean的语句如下:

<jsp:useBean id=”user” class=”mypackage.User” scope=”page”/>要取出该JavaBean的loginName属性值,以下语句正确的是()

A. <jsp:setProperty name=”user” property=”loginName”>

B. <jsp:getProperty id=”User” property-“loginName”/>

C. <%=user.getLoginName()%>

D. <%=user. getProperty(“loginName”)%>

1.Servlet生命周期是由javax.servlet.servlet.Servlet 接口的init()、service()和destroy()方法所定义。

2.在Servlet中数据提交的处理方式有两种,分别是GET和 POST

3.在Servlet 中,HttpServletResponse 的 sendRedirect 方法用来把一个HTTP请求重定向到另外的URL.

4.Servlet 容器初始化一 个Servlet对象时会为这个Servlet对象创建一个 ServletConfig 对象,在该对象中包含Servlet初始化参数信息。
5.在Servlet运行过程中,Servlet容器使用接口 HttpSession 建立起HTTP客户和Web服务器之间的会话关系。
6.在Servlet过滤器的生命周期方法中,每当传递请求或响应时,Web容器会调用 doFilter() 方法。

1.在Serve生命周期中,对应服务阶段的方法是()

A. doGet)

B. doPost()

C. doGet 和doPost()

D. service()
2下列有Servlet的生命周期。说法不正确的是()

A.在创建自己的Servlet的时候,应该在初始化方法init0中 创建、Servlet实例

B.在Servlet 生命周期的服务阶段,执行service0方法,根据用户请求的方法,执行相应的doGet()或是doPost)方法

C.在销毁阶段,执行destroy0方法后系统立刻进行垃圾回收

D. destroy0方法仅执行一一次,即在服务器停止且卸载Servlet时执行该方法

3.javax.servlet.Servlet 接口中表示Servlet实例化之后, Servlet容器调用()此方法来完成初始化工作。

A. init()

B. getServletConfigO)

C. getServletInfo()

D.destory()

4.以下哪个标签不属于过滤器标签()
A. <filter-name>

B.<filter-class>

C. <filte-napping>

D. <servlet-lass>

5.以下哪个标签不用于配置Servlet时使用()

A.<welcome-file>

B.<url-patterm>

C. <servlet-name>

D. <servlet-class>

6.配置过滤器的时候()不是<dispatcher>元素的可选值。

A. REQUEST

B. RESPONSE

C. INCLUDE

D. FORWARD

7.下列方法中不属王Servlet读取表单中的数据常用的方法的是()

A. getParameter()

B. getParameterValues()

C. getParameterNames()

D. getParameterMaps()

8.以下哪些接口可以用于监听HTTP 会话?

A. HttpSessionListener

B. HttpSessionActivationI istener

C. HttpSessionAttributeListener

D.以上答案均可

1.EL表达式的基本语法结构为${expression}

2.EL 表达式中提供 “[]”操作符和“.”操作符 两种运算符来存取数据。

3.页面上下文对象是指 pageContext 它用于访问JSP的内置对象。

4.如界在EL中使用了保留关键字,会抛出 javax.el.ELException 异常。

5.在EL中提供了6个访问环境信息中的隐含对象,分别是param、paramValues、 header、headerValues、initParam 和cookie对象。

6.在EL表达式中,有一个特殊的运算符 empty , 用来确定一个对象或变量是否为null或为空。

7.创建EL函数,在Java文件中要编写公共方法为 静态 方法。

8.访向作用域范围的隐含对象包括pageScope,requestScope ,sessionScope和applicationScope

1.下面哪个不是 EL表达式中 与范围有关的隐含对象?

A. pageScope

B. requestScope

C. sessionScope

D. cookieScope

2.下列哪个是EL表达式中的逻辑运算符?

A.&&或and

B.==或eq

C. /或div

D. Empty

3.下列哪个是EL表达式中的算术运算符?

A.&&或and

B.==或eq

C. /或div

D. empty

4.下列哪个是EL表达式中的关系运算符?

A.&&或and

B.==或eq

C. /或div

D. empty

5.下列不属于EL表达式的存取范围的是()

A. page

B. request

C. session

D. cookie

6.下列哪个运算符优先级最高?

A. []

B. ()

C. *

D.==

7.在EL表达式中,与输入有关的隐含对象有param和()

A. paramValues

B. requestScope

C. sessionScope

D. cookieScope

1.在JSP页面中使用 taglib 指令来使用自定义标记。

2.JSTL标签库实际上是由5种功能不同的标签库组成,分别是核心标签库、SQL标签库 、XML 标签库和函数标签库。

3.核心标签库 主要用于完成JSP页面的常用功能,其前缀是c

4.<c:redirect> 将客户端发出的request 请求重定向到其他URL服务端。

5.虽然<c:if>标签没有对应的else标签,但是利用JSTL提供的 <:choose> 和 <c:when> <c:otherwise>标签也可以实现if else功能。

1.将表达式的值输出到 JSP页面应该选择()标签。

A. <c:set>

B. <c:out>

C. <c:remove>

D. <c:catch>

2.<c:set>标签中的scope属性,表示变量作用域,默认情况下是()

A. Application

B.page

C. session

D. request

3.<c:when> 和<c:otherwise>的父标签是()

A. <e:choose>

B. <c:set>

C. <c:catch>

D. <c:forEach>

4.()标签是将文件导入站内或者格式j将他网站的静态和动态文件导入到Web页面中,

A. <c:import>

B. <c:url>

C. <c:redirect>

D. <c:param>

5.在JSTL 标签中, () 标签可以根据循环条件遍历数组和集合类中的所有或部分

A. <c:choose>

B. <c:remove>

C. <c:forTokens >

D. <c:forEach>

6.在JSTL标签库中,()封装了关于数据库访问的通用逻辑。

A. SQL标签库

B. XML标签库

C.函数标签库

D.格式标签库

1.MVC应用程序被分为三个核心部分:模型(Model)、视图(View) 和控制器(Controller)。

2.在Struts2框架的应用开发中,Action 作为框架的核心类,被称为业务逻辑控制器。

3.<package> 标签的 namespace 属性,可用来指定包的命名空间。

4.在struts.xml 文件中,常用的通配符有 “*” 和“\”两个。

5.Struts2 中定义的Action类都要直接或间接实现 Action 接口。

6.在继承AbstractInterceptor对象后,创建拦截器时必须重写 intercept() 方法。

1.下列不是Action接口的静态成员变量的是()

A. SUCCESS

B. ERROR

C. LOGIN

D. NO

2.下列标签中,不属于应用表单标签的是()

A. radio

B. form

C. iterator

D. submit

3.下列叙述中错误的是()

A. Strut2将它的核心功能放到拦截器中实现而不是分散到Action中实现

B.拦截器,在AOP中用于在某个方法或字段被访问之前,进行拦截

C.Struts2标签库的描述符包含在Struts2的核心JAR包中,在META-INF目录下,文件名为struts2-tags.tld的文件中

D. web.xml并不是Struts2 框架特有的文件

4.Struts2 提供的过滤器是在()配置文件中进行配置的。

A. web.xml

B. struts.xml

C. Action.java

D. MANIFEST.MF

5.Action 中默认的方法是()

A. execute()

B. doGet()

C. doPost()

D. success()

1.Spring Core 模块是Spring的核心容器,提供Spring框架的基本功能。

2.使用ApplicationContext 的接口来创建Spring的ApplicationContext容器时,FileSystemXmlApplicationContext 类不从类路径中获取配置文件,而是通过参数指定配置文件的位置。

3.Spring 中的依赖注入有 设值注入和构造注入两种方式。

4.Spring 提供了三种类型的切入点,分别是静态切入点、动态切入点和自定义切入点

5.Spring中事务管理的两种方式分别是编程式事务管理和声明式事务管理

6.大部分的控制器都会返回一个 MadelAndView 对象,该对象仅有一个视图的逻辑名称这个名称没有与指定的视图关联。

1.应用构造器注入方法实现将TestB实体对象注入TestA中,以下选项中,在TestA的元素中添加的代码正确的是()

<bean name=”testA” class=”com.itzcn. model. TestA”>

<bean name=”testB” class=”com.itzcn .model. TestB”>

A. <constructor-arg><value>testB</value></constructor-arg>

B. <constructor-arg><ref local=”testB”></ref></constructor-arg>

C. <constructor-arg><bean>testB</bean></constructor-arg>

D.以上都不对

2.在应用JdbcTemplate查询数据时,调用queryForList(Stringsq)方法返回的List集合的元素类型为()

A. List 类型

B. String类型

C. Map类型

D. Set 类型

3.关于DAO,下列说法错误的是()

A. DAO代表数据访问对象(Dus AcssObjec1)

B. DAO属于 OR Mpn技术的一种

C.DAO用于控制业务流程

D. DAO用于操作数据库

4.关于Spring MVC的核心控制器DispatcherServlet的作用,以下说法错误的是()

A.它负责接收HTTP请求

B.加载配置文件

C.实现业务操作

D.初始化上下文应用对象App lica tionContext

5.在实现分步骤的用户注册功能时,可以应用SpringMVC的哪个控制器实现?

A.核心控制器

B.表单控制器

C.多动作控制器

D.向导控制器

6.在获取URL中的参数查询信息时,可以应用Spring MVC的哪个控制器实现?

A.简单控制器

B.表单控制器

C.命令控制器

D.向导控制器

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

客官,赏一瓶怡宝吧。

支付宝
微信