Loading

java web 知识点 & 项目结构 & 代码示例

概念

第一部分

  1. 请求转发在服务器内部完成,地址栏URL不变,适合数据共享;而请求重定向则在客户端完成,导致URL变化,适合需要通知用户访问新页面的场景。
  2. GET一般用于获取数据,适合用于不改变服务器状态的请求,适合传输少量数据。
    POST用于提交数据并可能改变服务器状态,适合传输大量数据和敏感信息。(数据大小无限制,请求方式更安全)
  3. C/S架构的客户端程序直接与数据库服务器端建立连接
    B/S架构是客户机上无需安装专门的客户端程序,程序中的业务逻辑处理都集中到了Web服务器上,浏览器并不是直接与数据库服务器建立连接,而是通过Web服务器与数据库服务器需要建立连接。
  4. Include指令:只有一个file属性,用于指定要包含文件的路径。
    css是一种用于(增强)控制网页样式并允许将样式信息与网页内容分离的标签性语言。
    Session是指用户与服务器之间的对话,通常从用户登录开始,到用户登出或会话超时结束。它用来存储与用户相关的数据,如身份验证信息和用户偏好设置。

第二部分

  1. 请列举5个JSP内置对象。
    1.request:表示客户端请求的信息,包括请求参数、请求头等。
    2.response:用于向客户端发送响应,包括设置响应类型、响应头等。
    3.session:用于管理用户的会话信息,允许在多个请求间存储用户信息。
    4.application:代表整个Web应用程序的上下文,用于在应用范围内存储数据。
    5.out:用于向客户端输出内容,通常是输出HTML或文本信息。
  2. 请简述JavaScript的主要特点。
    解释型语言:JavaScript不需要编译,直接由浏览器解释执行。
    基于对象:支持面向对象编程,使用对象和原型来组织代码。
    动态类型:变量类型可以在运行时动态变更,支持多种数据类型。
    事件驱动:可以通过事件监听器响应用户交互(例如鼠标点击、键盘输入等)。
    跨平台:可以在各种操作系统和浏览器上运行,具备良好的兼容性。
  3. 请简述监听器的概念,并列举出三要素。
    概念:监听器是Java EE Web应用中的一种组件,它用于监听特定事件(如会话创建、销毁或上下文变化),并对这些事件进行处理。
    三要素:1.事件源:触发事件的对象(例如ServletContext、HttpSession等)。
    2.事件类型:监听器感兴趣的事件类型(如会话创建、会话销毁等)。
    3.事件处理:监听器对发生事件时执行的具体操作,通过实现相应的接口来定义处理逻辑。
  4. 请描述5个XMLHttpRequest 对象常用属性及其作用。
    1.readyState:表示请求的当前状态,值从0到4逐步变化,最后的状态4表示请求完成。
    2.status:返回HTTP状态码,用于检查请求是否成功(如200表示成功,404表示未找到)。
    3.responseText:包含服务器返回的文本响应数据,通常是HTML或JSON格式的字符串。
    4.responseXML:当服务器返回XML格式的数据时,返回响应的XML文档。
    5.onreadystatechange:一个事件处理程序,它在 readyState 变化时调用,可以用于检查请求进度并处理响应。
  5. 请简述Servlet的5个主要任务。
    1.接收请求:Servlet接受来自客户端的HTTP请求,并获取请求参数和信息。
    2.处理请求:根据业务逻辑处理请求,例如处理表单数据、访问数据库等。
    3.生成响应:构建HTTP响应,包括设置响应类型、数据内容等。
    4.发送响应:将生成的响应发送回客户端,通常为HTML页面或JSON数据。
    5.管理会话:维护用户会话信息,通过HttpSession对象存储用户数据以在多个请求中共享。

目录结构

image

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 {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected 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");

        //创建JavaBean
        UserBean 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;
    }

    @Override
    public 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语句- preparedStatement
        String 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;
        }
    }
}
posted @ 2024-11-24 11:19  一只大学生  阅读(9)  评论(0编辑  收藏  举报