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
二、判断题
-
doDestroy()不是servlet的内置方法。 对
Destroy()是servlet内置方法
-
tomcat是一个开源的免费的Web 服务器,它支持javaEE所有规范。错
只支持部分JavaEE规范
-
form的method属性如果不指定,也默认为post请求。 错
method方法,默认为get请求
-
post比get安全且post接收的长度比较长。 对
-
Post属于表单的隐式提交信息方法。 对
-
表单提交的信息就封装在HTTP请求消息的信息体部分,用户使用request对象的getParameter方法可以得到通过表单提交的信息。 对
-
getgetAttribute (“”)返回一个Object类型对象。 对
-
session对象可以用来保存用户会话期间需要保存的数据信息。 对
-
Servlet能脱离服务器运行。 错
不能脱离
-
在Servlet生命周期中,destroy方法只能被调用一次。 对
-
使用response.sendRedirect(“”)来实现重定向。 对
-
利用response对象的sendRedirect方法只能实现本网站内的页面跳转,但不能传递参数。 对
-
respone对象主要用于向客户端发送数据。 对
-
在Servlet生命周期中,service方法只被调用一次。 错
除了Init和Destory执行一次,service方法执行多次
-
一个Servlet只能映射一个虚拟路径 错
映射多个路径
三、填空题
- 表单标记中的 action 属性用于指定处理表单数据程序url的地址。
- form的method属性如果不指定,默认为 GET 请求。
- get请求比post请求 快 。
- JSP本质上是一个 servlet 。
- 生成的Cookie存储在 浏览器。
- Servlet中使用 getSession 方法获取Session对象。
- Servlet接口只定义了一个服务方法是 service 。
- getAttribute (“”) 返回一个 Object 类型。
- page指令中的import 属性可以在页面中出现 多 次。
<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期末复习