该登录模块利用js进行设计,JavaScript函数CheckSubmit()对输入框是否为空进行验证,使用js的技术结合Mysql数据库的查询语句进行登录信息的验证。首先从文本框中分别获得账号user_name和密码user_pw,使用Sql语句“select * from t_user where user_name=‘”+user_name+“’ and user_pw=‘”+user_pw+“’”将查询结果赋给rs结果集,若mysql_query()返回值为空,表示数据库找不到该用户数据,若mysql_query()返回值不为空,则显示登录成功,进入主界面。
用户登录流程图如下所示。
图5-1用户登录流程
用户登录流程:用户只有输入正确的用户名和密码才会成功进入系统,用户输入用户名密码后点击登录按钮,系统会进行校验该用户名是否存在,如果用户名与密码不匹配或者用户名不存在,则返回主界面。
系统登录界面如下图所示。
图5-2系统登录界面
登录功能的逻辑代码如下所示。
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
在浏览器的地址栏里输入http://localhost:3306/index.Java 地址,就可以跳转到小说网站的首页,首页是由4个页面组成的,包括top、left、down和center等页面,这里也是浏览者访问系统的入口,通过@ include引入。
首页载入流程图如下所示。
图5-3首页载入流程
首页载入流程:系统先连接数据库,显示界面参数初始化,读取数据库的数据表,读取html显示模板,对数据按添加时间排序,按照模板设计位置显示数据,刷新显示界面,断开数据库连接。
首页如下图所示。
图5-4首页界面
其中载入首页的主要代码如下。
<?Java include_once 'qttop.Java';?>
<?Java include_once 'qtleft.Java';?>
<?Java include_once 'qtdown.Java';?>
系统的用户通过自行注册生成,在系统首页点击用户注册菜单,系统跳转到对应的注册页面。点击重置按钮,清空所填数据,点击注册按钮完成注册。
用户注册流程图如下所示。
图5-5用户注册流程
注册个人信息实现流程为:填写个人信息,系统使用JQuery选择器获取在网页中输入的注册信息,再对联系方式、登录密码等信息进行验证,验证通过后用Ajax异步请求方式向服务器发送请求并把数据传送到后台,然后验证用户名是否已存在,如果已存在则注册失败提示“用户名已存在”;如果用户表中没有该用户名则把用户信息加入数据库,把操作状态以json字符串方式返回到前台。Ajax请求成功接收到返回的数据时会触发成功回调函数,然后解析返回的json字符串,系统根据返回信息弹出提示框,注册成功后返回登录页。
用户注册界面如下图所示。
图5-5用户注册界面
用户注册页面的逻辑代码如下。
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
用户给小说添加评论,包括评分,评论人,评论内容等,在pinglunadd.Java实现评论的逻辑添加,管理员管理系统的所有评论信息,在pinglun_list.Java实现评论的管理。
评论流程图如下所示。
图5-6信息评论流程
用户登录成功后,浏览小说页面,输入评论语,添加该评论,修改评论,返回评论相关界面。
评论添加界面如下图所示。
图5-7评论添加界面
添加评论的主要逻辑代码如下。
<?Java
session_start();
if($_SESSION["username"]=="")
{
echo "<script>javascript:alert('对不起,请您先登陆!');window.close();</script>";
exit;
}
include_once 'conn.Java';
$id=$_GET["id"];
$addnew=$_POST["addnew"];
if ($addnew=="1" )
{
$wenzhangID=$_POST["wenzhangID"];$pinglunneirong=$_POST["pinglunneirong"];$pinglunren=$_POST["pinglunren"];$biao=$_POST["biao"];$pingfen=$_POST["pingfen"];
$sql="insert into pinglun(wenzhangID,pinglunneirong,pinglunren,biao,pingfen) values('$wenzhangID','$pinglunneirong','$pinglunren','$biao','$pingfen') ";
mysql_query($sql);
echo "<script>javascript:alert('评论成功!'); window.opener.location.reload();window.close();</script>";
}
?>
用户选择相应的小说资讯,通过id传参,找到id为此传参的小说,在shoucangadd.Java浏览资讯内容。
小说资讯界面如下图所示。
图5-8小说资讯界面
小说资讯管理界面如下图所示。
图5-9小说资讯管理界面
小说资讯的主要逻辑代码如下。
<%
String lb=request.getParameter("lb");
HashMap ext = new HashMap();
new CommDAO().insert(request,response,"xinwentongzhi",ext,true,false,"xinwentongzhi_add.jsp?lb="+lb);
%>
管理员发布小说内容后,用户找到对应的小说信息,包括¥,选择相应的小说中心,通过id传参,找到该小说具体内容。
小说中心流程如下图所示。
图5-10小说中心流程
小说中心界面如下图所示。
图5-11小说中心界面
小说中心的主要逻辑代码:
<mapper namespace="com.project.demo.dao.base.BaseMapper">
<select id="selectBaseList" resultType="java.util.LinkedHashMap">
${select}
</select>
<select id="selectBaseCount" resultType="Integer">
${count}
</select>
<select id="selectBaseOne" resultType="Object">
${select}
</select>
<update id="updateBaseSql">
${sql}
</update>
<delete id="deleteBaseSql">
${sql}
</delete>
</mapper>
管理员对系统用户的管理,在yhzhgl.Java实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,提交到mod.Java中,使用sql命令更新密码。
管理员用户管理的界面如下图所示。
图5-12管理员用户管理界面
用户管理的逻辑代码如下。
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
-
-
- 小说中心管理模块
-
管理员在xiaoshuoxinxi_add.Java发布小说,跳转至小说添加表单,提交小说信息,包括小说编号、书名、小说类别、作者、封面等,小说提交后,数据库的小说信息表刷新数据,系统将小说信息展示出来。
小说管理的流程如所示。
图5-13小说管理流程
小说分类的界面如所示。
图5-14小说分类界面
小说中心管理的界面如所示。
图5-15小说中心管理界面
小说中心管理的逻辑代码如下。
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
如何建立自己的网站李笑来泰州企业文化咨询在线crc16计算器小程序开发者中心宝应secret剧本杀热门seo推广排名稳网站规划的意义主要有哪些?绍兴网站建设模板企业平台的核心处理动画设计电子书哪里可以下载央视频直播在线直播房产营销软件京东官网电脑版网页最近河源新闻头条桂林北站到磨盘山码头湖北企业网站模板建站怎么用安徽通报有1名无症状感染者永久免费saascrmhtml代码作用电商运营方案怎么写规划网络推广的主要目标提升学历被骗了报警有用吗东营信息港招聘网中国建设银行信用卡商城官网公众号平台群发和发布什么区别深圳龙岗做网站的公司有哪些张家港小程序商城制作科技型中小企业官网官网建设推广呼市第二波疫情最新消息网页布局实训目的