JavaWeb期末复习

Posted 想成为大师啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb期末复习相关的知识,希望对你有一定的参考价值。

一、选择题

1、一个Servlet可以被映射的虚拟路径个数是( D )。
A、0
B、1
C、2
D、多

2、 下列方法中,哪个不是Servlet接口中的方法( D )。
A、init
B、service
C、getServletInfo
D、getServlet

3、以下哪个是Web服务器( C )。
A、JCreator
B、JBuilder
C、Tomcat
D、Eclipse

4、在表单里,用于发送敏感数据的方法( B )。
A.GET
B.POST
C.PUT
D.OPTIONS

5、下面哪个方法当服务器关闭时被调用,用来释放Servlet所占用的资源( D )。
A、service()
B、doPost()
C、close()
D、destroy()

6、Servlet中的数据能与JSP共享吗?( A )。
A.能,我们可以将Servlet中的数据放入HttpSession,在JSP页面中使用其相对应的内置对象得到我们Servlet中的数据。
B. 不能,HttpSession无法在JSP和Servlet直接传递数据。
C. 不能,我们可以将Servlet中的数据放入HttpServletRequest,在JSP页面中使用其相对应的内置对象得到我们Servlet中的数据。
D.不能,HttpServletRequest无法在JSP和Servlet直接传递数据

7、关于JSP的运行原理,下列说法正确的是( A )。
A、JSP本质上是一个Servlet
B、JSP本质上是一个class文件       
C、Servlet容器不能运行JSP
D、上面都是错的

8、启动tomcat 的命令( C )。
A. shutdown.bat
B.javac.exe
C. startup.bat
D. startup.exe

9、下列选项中不属于Servlet生命周期的方法是( D )。
A、init
B、service
C、destroy
D、getServletInfo

10、下列选项中,在web.xml中配置定义Servlet,包括Servlet的名称和Servlet的实现类的结点是( A )。
A、<Servlet>
B、<Servlet-config>
C、<Servlet-mapping>
D、<web-app>

11、 在J2EE中,在一个JSP文件中,有表达式<%=2+3 %>,它将输出( B )。
A、2+3
B、5
C、23
D、输出报错

12、创建Servlet后可以在以下那个文件中对Servlet进行配置( A )。
A、web.xml
B、application.xml
C、config.xml
D、web-config.xml

13、关于get方式提交和post方式提交,说法错误的是( D )。
A.post比get安全且post接收的长度比较长。
B.post是以表单的形式提交请求的,get是以浏览器的形式提交请求的,所以get比较快。
C.post更容易解决我们的中文乱码问题。
D. form的method属性如果不指定,也默认为post请求。

14、在配置Servlet是,可以使用一下哪个注解来映射路径( D )。
A、@Controller
B、@WebService
C、@WebFilter
D、@WebServlet

15、下列不是JSP隐式对象的是( C )。
A、Request
B、out
C、Context
D、Session

16、JSTL是JSP标准标签库,其中用于数据库访问的标签库,前缀是( D )。
A. c
B. x
C. fmt
D. sql

17、在login.JSP中存在以下代码

<form action=”login”  method=”post”>
	<input type=”text”  name=“yourname”  id=“myName”  value= “username”>
<form>

当表单被提交时,下列选项可以获取到input框的值的是( B )。
A、request.getParameter(“username”)
B、request.getParameter(“yourname”)
C、request.getParameter(“name”)
D、request.getParameter(“myName”)

18、 内建对象request,封装了来至用户的请求,其中返回客户端Cookie的方法是( A )。
A、getCookies
B、getMethod
C、getAttribute
D、setAttribute


二、判断题

  1. doDestroy()不是servlet的内置方法。 对

    Destroy()是servlet内置方法
    
  2. tomcat是一个开源的免费的Web 服务器,它支持javaEE所有规范。错

    只支持部分JavaEE规范
    
  3. form的method属性如果不指定,也默认为post请求。 错

    method方法,默认为get请求
    
  4. post比get安全且post接收的长度比较长。 对

  5. Post属于表单的隐式提交信息方法。 对

  6. 表单提交的信息就封装在HTTP请求消息的信息体部分,用户使用request对象的getParameter方法可以得到通过表单提交的信息。 对

  7. getgetAttribute (“”)返回一个Object类型对象。 对

  8. session对象可以用来保存用户会话期间需要保存的数据信息。 对

  9. Servlet能脱离服务器运行。 错

    不能脱离
    
  10. 在Servlet生命周期中,destroy方法只能被调用一次。 对

  11. 使用response.sendRedirect(“”)来实现重定向。 对

  12. 利用response对象的sendRedirect方法只能实现本网站内的页面跳转,但不能传递参数。 对

  13. respone对象主要用于向客户端发送数据。 对

  14. 在Servlet生命周期中,service方法只被调用一次。 错

    除了Init和Destory执行一次,service方法执行多次
    
  15. 一个Servlet只能映射一个虚拟路径 错

    映射多个路径
    

三、填空题

  1. 表单标记中的 action 属性用于指定处理表单数据程序url的地址。
  2. form的method属性如果不指定,默认为 GET 请求。
  3. get请求比post请求
  4. JSP本质上是一个 servlet
  5. 生成的Cookie存储在 浏览器
  6. Servlet中使用 getSession 方法获取Session对象。
  7. Servlet接口只定义了一个服务方法是 service
  8. getAttribute (“”) 返回一个 Object 类型。
  9. page指令中的import 属性可以在页面中出现 次。
  10. <url-pattern>里面的内容必须以 / 开头。

四、代码题(员工管理系统)

采用MVC三层架构

总体建包样式:

首先建立连接数据库部分:在这里一般会遇到的问题可能就是,mysql驱动的问题;一定要记得释放资源

  • 一般 8 版本之后的用com.mysql.cj.jdbc.Driver
  • 一般 5 版本的用com.mysql.jdbc.Driver

DBUtil.java

package com.blb.util;

import java.sql.*;

/**
 * 数据库工具类,连接数据库
 */
public class DBUtil 

    //   加载驱动
    static 
        try 
            Class.forName("com.mysql.cj.jdbc.Driver");
         catch (ClassNotFoundException e) 
            e.printStackTrace();
        
    

    //定义数据库初始信息
    private final static String user = "xxxx";
    private final static String password = "xxxxxxxx";
    private final static String url = "jdbc:mysql://localhost:3306/xxx?characterEncoding=utf-8&serverTimezone=GMT%2B8";

    //连接数据库
    public static Connection getConnection() 

        try 
            return DriverManager.getConnection(url, user, password);
         catch (SQLException e) 
            e.printStackTrace();
        

        return null;
    

    //资源释放
    public static void close(Connection conn, PreparedStatement ps, ResultSet rs) 

        if (rs != null) 
            try 
                rs.close();
             catch (SQLException e) 
                e.printStackTrace();
            
        

        if (ps != null) 
            try 
                ps.close();
             catch (SQLException e) 
                e.printStackTrace();
            
        

        if (conn != null) 
            try 
                conn.close();
             catch (SQLException e) 
                e.printStackTrace();
            
        
    

    //    重载资源释放方法
    public static void close(Connection conn, PreparedStatement ps) 

        close(conn, ps, null);
    

分别建立我们的管理员和员工类(entity

User.java

package com.blb.entity;

/**
 *实体类User,封装属性和方法
 */
public class User 

    private int id;     //主键,唯一
    private String username;   //用户名
    private String password;   //密码

    /**
     * 全参构造
     * @param id
     * @param username
     * @param password
     */
    public User(int id, String username, String password) 
        this.id = id;
        this.username = username;
        this.password = password;
    

    public User(String username, String password) 
        this.username = username;
        this.password = password;
    

    public int getId() 
        return id;
    

    public void setId(int id) 
        this.id = id;
    

    public String getUsername() 
        return username;
    

    public void setUsername(String username) 
        this.username = username;
    

    public String getPassword() 
        return password;
    

    public void setPassword(String password) 
        this.password = password;
    


Emp.java

package com.blb.entity;

public class Emp 

    private int id;
    private String erpName;
    private String deptName;

    public Emp(String erpName, String deptName) 
        this.erpName = erpName;
        this.deptName = deptName;
    

    public Emp(int id, String erpName, String deptName) 
        this.id = id;
        this.erpName = erpName;
        this.deptName = deptName;
    

    public int getId() 
        return id;
    

    public void setId(int id) 
        this.id = id;
    

    public String getErpName() 
        return erpName;
    

    public void setErpName(String erpName) 
        this.erpName = erpName;
    

    public String getDeptName() 
        return deptName;
    

    public void setDeptName(String deptName) 
        this.deptName = deptName;
    


连接数据库之后,开始用JDBC对数据进行增删改查(dao

UserDao(接口)

package com.blb.dao;

import com.blb.entity.User;

public interface UserDao 

    //通过用户名获取用户,查询
    User getUserByUserName(User user);
    //新增用户
    boolean insertUser(User user);



EmpDao(接口)

package com.blb.dao;

import com.blb.entity.Emp;

import java.util.List;

public interface EmpDao 

    //查询所有的员工信息
    List<Emp> getAllErp();
    //查询详细员工信息
    Emp getEmpById(int id);

    //新增员工
    boolean insertEmp(Emp emp);

    //删除员工
    boolean delEmp(int id);

    //修改员工信息
    boolean updateEmp(Emp emp);


UserDaoImpl.java

package com.blb.dao.impl;

import com.blb.dao.UserDao;
import com.blb.entity.User;
import com.blb.util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * UserDao的实现类,做数据库表的增删改查
 */
public class UserDaoImpl implements UserDao 

    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs =null;

    /**
     * 通过用户名从数据库查询用户信息,并返回
     * idea提示快捷键alt+enter
     * @param user
     * @return
     */
    @Override
    public User getUserByUserName(User user) 
        //写数据查询
        //获取连接
        conn = DBUtil.getConnection();
        User user1 = null;
        //Sql语句
        String sql = "select * from user where u_name = ?";
        try 
            //预编译
            ps=conn.prepareStatement(sql);
            //值的插入
            ps.setString(1,user.getUsername());
            //查询
            rs = ps.executeQuery();
            while (rs.next())
                int id = rs.getInt("id");
                String username = rs.getString("u_name");
                String password = rs.getString("u_pwd");

                //实例化User对象
                user1 = new User(id,username,password);
                //System.out.println(user1);

            

         catch (SQLException e) 
            e.printStackTrace();
        
        return user1;
    

    @Override
    public boolean insertUser(User user) 

        conn = DBUtil.getConnection();
        String sql = "insert into user (u_name,u_pwd) values(?,?)";
        //
        try 
            ps = conn.prepareStatement(sql);
            ps.setString(1,user.getUsername());
            ps.setString(2,user.getPassword());
            int count = ps.executeUpdate();
            return count>0;
         catch (SQLException e) 
            e.printStackTrace();
        

        return false;
    


EmpDaoImpl.java

package com.blb.dao.impl;

import com.blb.dao.EmpDao;
import com.blb.entity.Emp;
import com.blb.util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class EmpDaoImpl implements EmpDao 

    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;

    /**
     * 查询所有员工信息
     *
     * @return 存储员工对象的集合
     */
    @Override
    public List<Emp> getAllErp() 

        List<Emp> emps = new ArrayList<>();
        conn = DBUtil.getConnection();
        String sql = "select * from erp";
        try 
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();

            while (rs.next()) 
                int id = rs.getInt("s_id");
                String erpName = rs.getString("s_name");
                String deptName = rs.getString("dept_name");

                Emp emp = new Emp(id, erpName, deptName);
                emps.add(emp);
            
         catch (SQLException e) 
            e.printStackTrace();
        
        return emps;
    

    /**
     * 通过id查询对应员工的详细信息
     * @param id
     * @return emp对象
     */
    @Override
    public Emp getEmpById(int id) 

        conn = DBUtil.getConnection();
        String sql = "Select * from erp where s_id = ?";
        try 
            ps = conn.prepareStatement(sql);
            ps.setInt(1, id);
            rs = ps.executeQuery();

            while (rs.next())
                int sid = rs.getInt("s_id");
                String erpName = rs.getString("s_name");
                String deptName = rs.getString("dept_name");
                Emp emp = new Emp(sid,erpName,deptName);
                return emp;
            
         catch (SQLException e) 
            e.printStackTrace();
        
        return null;
    

    /**
     * 新增员工
     * @param emp
     * @return 布尔信息
     */
    @Override
    public boolean insertEmp(Emp emp) 

        conn = DBUtil.getConnection();
        String sql = "insert into erp (s_name,dept_name) values(?,?)";
        try 
            ps = conn.prepareStatement(sql);
            ps.setString(1,emp.getErpName());
            ps.setString(2,emp.getDeptName());
            int count = ps.executeUpdate();
            return count>0;
         catch (SQLException e) 
            e.printStackTrace();
        
        return false;
    

    /**
     * 删除员工
     * @param id
     * @return 布尔值
     */
    @Override
    public boolean delEmp(int id) 
        conn  = DBUtil.getConnection();
        String sql = "delete from erp where s_id = ?";
        try 
            ps = conn.prepareStatement(sql)JavaWeb期末复习

JavaWeb期末复习

大数据与云计算期末复习

期末复习——内存管理

MyBatis知识点复习(javaweb作业4)

动态SQL基础概念复习(Javaweb作业5)