学生管理系统java总结_javaweb学生管理系统 第一次总结

本文是关于JavaWeb实现的学生管理系统开发的总结,涵盖了所需的基础知识如Java SE、数据库、JS、Servlet等,并详细介绍了模型类、数据库连接工具类、字符串工具类、DAO类以及登录Servlet的实现,包括登录验证流程、客户端与服务器端跳转的区别。
摘要由CSDN通过智能技术生成

JavaWeb 学生管理系统 第一次总结

983a2e4727eca854606dbef3b8f4992c.png

f656547ea52a16273362a0b6d2d13876.png

497def73b0dc0b0b5832e08b9957b826.png

26e161c8219d14ae735fc8b25987046a.png

具备的知识

java se 高级

数据库

js

selvet

El表达式

jsp

项目 目录结构

[外链图片转存失败(img-dfQq8aOt-1568950286321)(https://i.imgur.com/8iHLNIK.png)]

模型包里创建 User类

代码:

package com.it.model;

/**

* 用户模型

* @author YandeHu

*

*/

public class User {

private int id;

private String userName;

private String password;

public User() {

super();

// TODO Auto-generated constructor stub

}

public User(String userName, String password) {

super();

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;

}

}

创建连接数据库的工具类

package com.it.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class Dbutil {

private String jdbcName="com.mysql.jdbc.Driver";

private String dbUserName="root";

private String dbpassword="123456";

private String dbUrl="jdbc:mysql://localhost:3306/db_studentInfo";

/*

* 获取数据库连接

*/

public Connection getCon()throws Exception{

Class.forName(jdbcName);

System.out.println("驱动包加载成功");

Connection con=DriverManager.getConnection(dbUrl, dbUserName, dbpassword);

return con;

}

/**

* 关闭数据库

* @param con Connection

* @throws Exception

*/

public void closeCon(Connection con) throws Exception{

if(con!=null){

con.close();

}

}

public static void main(String[] args) throws Exception {

Dbutil dbUtil=new Dbutil();

Connection con=null;

try {

con=dbUtil.getCon();

System.out.println("数据库连接成功");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

dbUtil.closeCon(con);

}

}

}

创建字符串的工具类

工具类中的方法是:

静态的判空操作

package com.it.util;

public class StringUtil {

/**

* 判断字符串是不是空的

* @param str

* @return

*/

public static boolean isEmpty(String str){

//假如前面有空格除去空格 如果等于""

if(str==null||"".equals(str.trim())){

return true;

}else{

return false;

}

}

public static boolean isNotEmpty(String str){

if(str!=null&&!"".equals(str.trim())){

return true;

}else{

return false;

}

}

}

创建操作用户数据库的dao类

package com.it.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import com.it.model.User;

/**

* 用户与数据库操作的类

* @author YandeHu

*

*/

public class UserDao {

/**

* 登录验证

* @param con 连接

* @param user 用户对象

* @return 返回一个用户对象

* @throws Exception

*/

public User login(Connection con,User user)throws Exception{

User resultUser=null;

String sql="select * from t_user where userName=? and password=?";

PreparedStatement psmt=con.prepareStatement(sql);

psmt.setString(1, user.getUserName()); //给设置值

psmt.setString(2, user.getPassword());

ResultSet rs=psmt.executeQuery(); //查询返回结果集

//由于只查询一种类型的 不用while 循环 从数据库查询出结果

if(rs.next()){

resultUser=new User();

//给用户设置值

resultUser.setUserName(rs.getString("userName"));

resultUser.setPassword(rs.getString("password"));

}

return resultUser;

}

}

编写登录的Servlet LoginServlet

主要的思想和方法

继承HTTPServlet父类重写 doGet() 和doPost()方法

使用request.getParameter(String str); 获取前台(页面)的数据(获取参数)

给前台页面设置值用:request.setAttribute(String args, Object obj);

客户端跳转

服务器端跳转

什么是客户端跳转

客户端跳转也叫重定向,是一个外部的跳转,使用的是HttpServletResponese对象中response.sendRedirect(Sting location)方法。是一个响应对象的方法,调用这个方法,表明整个请求已经结束。服务器开始向客户端返回执行的结果。

response.sendRedirect("main.jsp");

*注意:*客户端跳转只能传递session和application范围的属性,不能传递request范围的属性

客户端跳转过程图

有图可以看出客户端会发送两个请求,页面的路径会发生变化所以不能专递request。

[外链图片转存失败(img-eExiOXMF-1568950286322)(https://i.imgur.com/asiqRh1.png)]

什么是服务器端跳转

服务器端跳转也叫请求转发,是javax.servlet.RequestDispatcher接口的forward("")方法来实现的。

request.getRequestDispatcher("index.jsp").forward(request, response);

注意:服务器跳转地址是不会发生变化,所以可以接受request范围内的属性

服务器端跳转过程

[外链图片转存失败(img-kvxBeqIs-1568950286323)(https://i.imgur.com/DZP6AEZ.png)]

两者的区别

客户端跳转“/ ”代表服务器路径webapps ,即服务器根路径,服务器端跳转“/ ”代表站点根路径,即应用程序根路径

使用服务器端跳转时,客户浏览器的地址栏并不会显示目标地址的URL,而是用客户端跳转时,地址栏当中会显示目标资源的URL

客户端跳转向服务器请求两次,服务器响应给客户端响应两次

服务器端跳转 客户端请求一次,服务器端响应一次

在进行客户端跳转和服务器端跳转时,都需要指定目标资源的URL,如果这个路径以“”开始。在客户端跳转当中“”代表的是应用服务器根目录,而在服务器端跳转当中代表的是 应用程序 根目录。

登录验证数据库的处理流程

创建LoginServlet类 用来处理登录验证的流程

mvc开发模式(图片来源网络)

[外链图片转存失败(img-6iD1oAZu-1568950286324)(https://i.imgur.com/NiipS3K.png)]

继承HTTPServlet父类重写 doGet() 和doPost()方法

先从前台获取输入的内容

验证从前台传入的数据是不是null 如果是null 在浏览器上输出提示信息,进行服务器端跳转,跳转到登录页面,结束当前的方法

前台传来的数据不是null时,创建数据库连接、用户对象,将传来的值用来初始化用户对象。

数据库查询,查询是否有着对象,如果没有给出提示,有的话进行客户端跳转

关闭数据库连接

代码

package com.it.web;

import java.io.IOException;

import java.sql.Connection;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.it.dao.UserDao;

import com.it.model.User;

import com.it.util.Dbutil;

import com.it.util.StringUtil;

/**

* 登录功能的servlet

* @author YandeHu

*

*/

public class LoginServet extends HttpServlet{

//创建数据库工具类的连接

Dbutil dbutil=new Dbutil();

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(request, response);

}

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String userName=request.getParameter("userName");//从前台获取userName的数据

String password=request.getParameter("password");//从前台获取password的数据

request.setAttribute("userName", userName);

request.setAttribute("password", password);

//服务器端进行验证 验证用户名和密码是不是空的

if(StringUtil.isEmpty(userName)||StringUtil.isEmpty(password)){

//服务器端跳转和客户端跳转的区别

request.setAttribute("error", "用户名或者密码为空!");

request.getRequestDispatcher("index.jsp").forward(request, response);//服务器端跳转\

return;

}

//连接数据库

User user=new User(userName,password); //创建从客户端输入的信息的 所初始化的对象

Connection con=null;

try {

con=dbutil.getCon();

//进行数据库查询

User currentUser=UserDao.login(con, user); //这是返回从数据库中查询后 返回的User对象

if(currentUser==null){

request.setAttribute("error", "用户名或者密码错误");

//服务器端跳转 重定向

request.getRequestDispatcher("index.jsp").forward(request, response);

return;//结束这个方法

}else{

response.sendRedirect("main.jsp");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

dbutil.closeCon(con);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

登录页面代码

pageEncoding="UTF-8"%>

学生管理系统登录

function resetValue(){

document.getElementById("userName").value="";

document.getElementById("password").value="";

}

用户名:
密 码:

${error }

2017/10/19 18:19:03 项目练习来源于 www.java1234.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值