概念
第一部分
- 请求转发在服务器内部完成,地址栏URL不变,适合数据共享;而请求重定向则在客户端完成,导致URL变化,适合需要通知用户访问新页面的场景。
- GET一般用于获取数据,适合用于不改变服务器状态的请求,适合传输少量数据。
POST用于提交数据并可能改变服务器状态,适合传输大量数据和敏感信息。(数据大小无限制,请求方式更安全) - C/S架构的客户端程序直接与数据库服务器端建立连接
B/S架构是客户机上无需安装专门的客户端程序,程序中的业务逻辑处理都集中到了Web服务器上,浏览器并不是直接与数据库服务器建立连接,而是通过Web服务器与数据库服务器需要建立连接。 - Include指令:只有一个file属性,用于指定要包含文件的路径。
css是一种用于(增强)控制网页样式并允许将样式信息与网页内容分离的标签性语言。
Session是指用户与服务器之间的对话,通常从用户登录开始,到用户登出或会话超时结束。它用来存储与用户相关的数据,如身份验证信息和用户偏好设置。
第二部分
- 请列举5个JSP内置对象。
1.request:表示客户端请求的信息,包括请求参数、请求头等。
2.response:用于向客户端发送响应,包括设置响应类型、响应头等。
3.session:用于管理用户的会话信息,允许在多个请求间存储用户信息。
4.application:代表整个Web应用程序的上下文,用于在应用范围内存储数据。
5.out:用于向客户端输出内容,通常是输出HTML或文本信息。 - 请简述JavaScript的主要特点。
解释型语言:JavaScript不需要编译,直接由浏览器解释执行。
基于对象:支持面向对象编程,使用对象和原型来组织代码。
动态类型:变量类型可以在运行时动态变更,支持多种数据类型。
事件驱动:可以通过事件监听器响应用户交互(例如鼠标点击、键盘输入等)。
跨平台:可以在各种操作系统和浏览器上运行,具备良好的兼容性。 - 请简述监听器的概念,并列举出三要素。
概念:监听器是Java EE Web应用中的一种组件,它用于监听特定事件(如会话创建、销毁或上下文变化),并对这些事件进行处理。
三要素:1.事件源:触发事件的对象(例如ServletContext、HttpSession等)。
2.事件类型:监听器感兴趣的事件类型(如会话创建、会话销毁等)。
3.事件处理:监听器对发生事件时执行的具体操作,通过实现相应的接口来定义处理逻辑。 - 请描述5个XMLHttpRequest 对象常用属性及其作用。
1.readyState:表示请求的当前状态,值从0到4逐步变化,最后的状态4表示请求完成。
2.status:返回HTTP状态码,用于检查请求是否成功(如200表示成功,404表示未找到)。
3.responseText:包含服务器返回的文本响应数据,通常是HTML或JSON格式的字符串。
4.responseXML:当服务器返回XML格式的数据时,返回响应的XML文档。
5.onreadystatechange:一个事件处理程序,它在 readyState 变化时调用,可以用于检查请求进度并处理响应。 - 请简述Servlet的5个主要任务。
1.接收请求:Servlet接受来自客户端的HTTP请求,并获取请求参数和信息。
2.处理请求:根据业务逻辑处理请求,例如处理表单数据、访问数据库等。
3.生成响应:构建HTTP响应,包括设置响应类型、数据内容等。
4.发送响应:将生成的响应发送回客户端,通常为HTML页面或JSON数据。
5.管理会话:维护用户会话信息,通过HttpSession对象存储用户数据以在多个请求中共享。
servlet代码
package cn.edu.xaut.servlet;import cn.edu.xaut.bean.UserBean;
import cn.edu.xaut.dao.UserDao;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Date;
import java.sql.SQLException;@WebServlet(name = "RegisterServlet", urlPatterns = {"/RegisterServlet"})
public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理字符编码response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");//获取表单参数String username = request.getParameter("username");String email = request.getParameter("email");String pwd = request.getParameter("pwd");//创建JavaBeanUserBean user = new UserBean();user.setName(username);user.setEmail(email);user.setPassword(pwd);user.setRegisterDate(new Date(System.currentTimeMillis()));//使用userDao插入数据UserDao userDao = new UserDao();try {userDao.insertUser(user);} catch (Exception e) {throw new RuntimeException(e);}// 跳转到registerSuccess.jsp进行显示request.setAttribute("userbean", user);request.getRequestDispatcher("registerSuccess.jsp").forward(request,response);}
}
Bean代码
package cn.edu.xaut.bean;import java.sql.Date;public class UserBean {private int id;private String name;private String password;private String email;private Date registerDate;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Date getRegisterDate() {return registerDate;}public void setRegisterDate(Date registerDate) {this.registerDate = registerDate;}@Overridepublic String toString() {return "UserBean{" +"id=" + id +", name='" + name + '\'' +", password='" + password + '\'' +", email='" + email + '\'' +", registerDate=" + registerDate +'}';}
}
Dao代码
package cn.edu.xaut.dao;import cn.edu.xaut.bean.UserBean;
import cn.edu.xaut.util.JDBCUtil;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class UserDao {public boolean insertUser(UserBean user) throws SQLException, ClassNotFoundException {// 1. 获取连接Connection conn = JDBCUtil.getConnection();// 2. 声明sql语句- preparedStatementString sql = "insert into tb_users (name,password,email,registerDate)" +"values (?,?,?,?)";PreparedStatement ps = conn.prepareStatement(sql);// 3. 对预编译的sql语句设置参数ps.setString(1,user.getName());ps.setString(2, user.getPassword());ps.setString(3, user.getEmail());ps.setDate(4, user.getRegisterDate());// 4. 执行sql语句int num = ps.executeUpdate();// 5. 释放资源JDBCUtil.release(ps,conn);if(num > 0 )return true;return false;}public UserBean findUserByNameAndPassword(String name, String password){UserBean user = null;String sql = "select * from tb_users where name = '" + name + "' and password = '" + password +"'";return user;}
}
JDBC代码
package cn.edu.xaut.util;import java.sql.*;public class JDBCUtil {/* 返回数据库连接对象*/public static Connection getConnection() throws ClassNotFoundException, SQLException {Connection conn = null;// 1. 加载数据库的驱动Class.forName("com.mysql.cj.jdbc.Driver");// 2. 建立数据库的连接String url = "jdbc:mysql://localhost:3306/test6?serverTimezone=GMT%2b8";String dbUsername = "root";String dbPassword = "123456";conn = DriverManager.getConnection(url, dbUsername, dbPassword);return conn;}/*释放数据库资源 - 插入数据时*/public static void release(PreparedStatement ps, Connection conn) throws SQLException {if(ps != null){ps.close();ps = null;}if(conn != null){conn.close();conn = null;}}/*释放数据库资源 - 查询数据时*/public static void release(Statement st, ResultSet rs, Connection conn) throws SQLException {if(st != null){st.close();st = null;}if(rs != null){rs.close();rs = null;}if(conn != null){conn.close();conn = null;}}
}