前言:
最近在做一个小说网站,开发了Java Web的用户登录系统,功能较为完善。
实现的方式是JSP+Servlet,用户数据存入了Mysql中。
一、需求分析:
我们首先分析,用户登录系统首先我们要求用户要有,昵称和密码,最好在用户注册时让用户填写邮箱,方便我们做网站时向用户发送一些信息。
当有用户登陆时,前端页面,将用户填写的用户名、密码,送入Servlet。Servlet通过调用封装好的Mysql操作接口,查询数据库中是否有信息,再进行相关操作。
当新用户注册时,将用户填写的昵称、密码、邮箱,存入Mysql数据库中。
二、技术思想:
MVC模式、三层架构:
JSP、Servlet、Javabean
三、数据库设计:
我们存入数据库中的用户信息有三类:用户昵称、密码、邮箱。
首先要在Mysq数据库中建立有三种表头的表,把昵称作为索引主键。
了解Mysql相关操作命令介绍,请点击:
http://blog.csdn.net/mmayanshuo/article/details/79337950
四、数据库封装:
Java对Mysql编程,需要将相关Jar包导入项目:
即是mysql-connector-java,网上有很多下载地址。
下载完成后,导入项目的方式,请参阅:
JavaEE项目导入方式。
这是对Msql封装的包结构:
其中:
1、定义用户对象User;
2、封装对Mysql连接的相关操作;
3、定义对Mysql相关操作的接口;
4、实现(3)的接口,实现对Mysql相关操作;
5、定义Mysql外部操作接口;
6、实现(5)的接口,向外发布对Mysql的相关操作;
1、定义用户对象:
/*
* 定义用户对象
*/
//存储用户信息的实体类
public class User {
private String user_name;
private String user_mailbox;
private String user_password;
//返回用户名
public String get_user_name(){
return this.user_name;
}
//设置用户名
public void set_user_name(String user_name){
this.user_name=user_name;
}
//返回用户邮箱
public String get_user_mailbox(){
return this.user_mailbox;
}
//设置用户邮箱
public void set_user_mailbox(String user_mailbox){
this.user_mailbox=user_mailbox;
}
//返回用户密码
public String get_user_password(){
return this.user_password;
}
//设置用户密码
public void set_user_password(String user_password){
this.user_password=user_password;
}
}
2、连接Mysql数据库:
3、定义Mysql相关操作接口:
/*
* 对Mysql数据库相关操作接口
*/
import java.util.*;
public interface Userutils_inter {
//插入用户信息
public void insert_user_information(User u);
//更新用户信息
public void update_user_information(User u);
//删除用户信息
public void delete_user_information(User u);
//返回用户信息表
public List<User> getusers();
//查找用户
public User getUser_Byusername(String user_name);
}
4、实现Mysql相关操作接口:
5、定义Mysql外部操作接口:
import java.util.List;
import pers.xiaoma.mysql.User;
public interface Mysql_service_interface {
//插入用户信息
public void insert_user_information(User u);
//更新用户信息
public void update_user_information(User u);
//删除用户信息
public void delete_user_information(User u);
//返回用户信息表
public List<User> getusers();
//查找用户
public User getUser_Byusername(String user_name);
}
6、实现(5)的接口,向外发布对Mysql的相关操作:
import java.util.List;
import pers.xiaoma.mysql.User;
import pers.xiaoma.mysql.Userutils_inter;
import pers.xiaoma.mysql.Userutils;
public class Mysql_service implements Mysql_service_interface{
//插入用户信息
public void insert_user_information(User u){
Userutils_inter user = new Userutils();
user.insert_user_information(u);
}
//更新用户信息
public void update_user_information(User u){
Userutils_inter user =new Userutils();
user.update_user_information(u);
}
//删除用户信息
public void delete_user_information(User u){
Userutils_inter user =new Userutils();
user.delete_user_information(u);
}
//返回全体用户信息
public List<User> getusers(){
Userutils_inter user =new Userutils();
List<User> users=user.getusers();
return users;
}
//根据用户昵称查找用户
public User getUser_Byusername(String user_name){
Userutils_inter user =new Userutils();
User u =user.getUser_Byusername(user_name);
return u;
}
}
四、编写JSP+Servlet:
登录系统的Web层是用Jsp编写:
登陆时,只需填写昵称和密码,点击登录。当填写错误,或者没有填写,点击登录时重新跳转登录界面,并给出相应的提示。
新用户点击注册:
填写正确昵称、密码后,将进入我写的小说网站的首页:
好,我们来看代码:
在登录页面中,通form向servlet传递用户填写的昵称、密码。以及登录、注册事件。
注意箭头所指的Service字段,在servlet中通过捕捉service属性,来作出相应动作。
在Servlet中捕捉sercice属性:
String service = request.getParameter("service");
如果是登录界面作出请求,作出相应动作。
//处理登录需求
else if("login".equals(service))
{
Mysql_service_interface mysql_users = new Mysql_service();
//获取用户填写的用户昵称
String user_name=request.getParameter("user_name");
//System.out.println(user_name);
if(user_name=="")
{
//System.out.println("空");
String information="请首先登录";
request.setAttribute("information", information);
request.getRequestDispatcher("test/login.jsp").forward(request, response);
}
User user=mysql_users.getUser_Byusername(user_name);
String user_password=user.get_user_password();
System.out.println(user_password);
if(user_password==null)
{
String information="密码错误,请重新登录。新用户请先注册在使用";
//向登录界面传值,并跳转到登录页面
request.setAttribute("information", information);
request.getRequestDispatcher("test/login.jsp").forward(request, response);
}
//如果用户填写的登录密码正确,允许进入网站
else if(user_password.equals(request.getParameter("user_password")))
{
//从Mongodb数据库中取出所有小说的名称,传送到connectnovel.jsp页面
//新建Mongodb服务对象
Mongodb_service_interface mongo= new Mongodb_service();
List<String> list =mongo.get_all_novelname();
request.setAttribute("all_novelname", list);
request.getRequestDispatcher("test/connectnovel.jsp").forward(request, response);
}
}
//处理登录页面点击的注册需求
else if("register".equals(service))
{
request.getRequestDispatcher("test/register.jsp").forward(request, response);
}
//处理注册需求
else if("userRegister".equals(service))
{
//获取用户填写的信息
String user_name=request.getParameter("user_name");
String user_mailbox=request.getParameter("user_mailbox");
String user_password=request.getParameter("user_password");
//新建用户对象,并设置用户对象
User user =new User();
user.set_user_name(user_name);
user.set_user_mailbox(user_mailbox);
user.set_user_password(user_password);
//将新注册的用户插入数据库
Mysql_service_interface mysql =new Mysql_service();
mysql.insert_user_information(user);
//用户注册成功,跳转到登录页面
request.getRequestDispatcher("test/login.jsp").forward(request, response);
}
五、总结:
由于篇幅原因具体代码没有全部贴上,但相应的逻辑,和设计,我已经说的比较明白。其中还有很多不健全的地方,比如说界面就比较丑,没办法,以前没有接触过前端的东西,这次也是赶鸭子上架,欢迎批评指正!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/10372.html