设计一个使用servlet连接前后台的界面
下面是各个文件的具体代码(本文章仅是本人笔记使用,如有阅读不适敬请见谅~)
jsp文件
<%--
Created by IntelliJ IDEA.
User: 13905
Date: 2022/4/27
Time: 17:06
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>欢迎登录后台管理系统</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" src="js/jquery.js"></script>
<script src="js/cloud.js" type="text/javascript"></script>
<script language="javascript">
$(function(){
$('.loginbox').css({'position':'absolute','left':($(window).width()-692)/2});
$(window).resize(function(){
$('.loginbox').css({'position':'absolute','left':($(window).width()-692)/2});
})
});
</script>
</head>
<body style="background-color:#df7611; background-image:url(images/light.png); background-repeat:no-repeat; background-position:center top; overflow:hidden;">
<div id="mainBody">
<div id="cloud1" class="cloud"></div>
<div id="cloud2" class="cloud"></div>
</div>
<div class="logintop">
<span>欢迎登录后台管理界面平台</span>
</div>
<div class="loginbody">
<span class="systemlogo"></span>
<br />
<%
//声明java代码块进行错误提示语的逻辑校验
Object obj=request.getAttribute("flag");
if(obj!=null){
%>
<div style="text-align: center;">
<span style="font-size: 15px;color:darkred;font-weight: bold;">用户名或者密码错误</span>
</div>
<%} %>
<%
//声明java代码块进行密码修改提示语
Object pwd=session.getAttribute("pwd");
if(pwd!=null){
%>
<div style="text-align: center;">
<span style="font-size: 15px;color:darkred;font-weight: bold;">密码修改成功</span>
</div>
<%}
session.removeAttribute("pwd");
%>
<%
//声明java代码块进行注册提示语
Object reg=session.getAttribute("reg");
if(reg!=null){
%>
<div style="text-align: center;">
<span style="font-size: 15px;color:darkred;font-weight: bold;">注册成功</span>
</div>
<%}
session.removeAttribute("reg");
%>
<div class="loginbox loginbox1">
<form action="UserServlet" method="post">
<input type="hidden" name="oper" value="login" />
<ul>
<li></li>
<li><input name="uname" type="text" placeholder="用户名" class="loginuser" /></li>
<li><input name="pwd" type="password" placeholder="密码" class="loginpwd" /></li>
<li class="yzm">
<span><input name="" type="text" value="验证码" onclick="JavaScript:this.value=''"/></span><cite>X3D5S</cite>
</li>
<li><input name="" type="submit" class="loginbtn" value="登录" onclick="javascript:window.location='main.html'" /><label><a href="user/reg.jsp">注册</a></label><label><a href="#">忘记密码?</a></label></li>
</ul>
</form>
</div>
</div>
<div class="loginbm">版权所有 尚学堂 <a href="http://www.uimaker.com">uimaker.com</a> 仅供学习交流,勿用于任何商业用途,交流QQ:189088900878</div>
</body>
</html>
main.jsp
<%--
Created by IntelliJ IDEA.
User: 13905
Date: 2022/4/28
Time: 11:27
To change this template use File | Settings | File Templates.
--%>
<%--<%--%>
<%-- String path = request.getContextPath();--%>
<%--// String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";--%>
<%--%>--%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>信息管理系统界面</title>
</head>
<frameset rows="88,*,31" cols="*" frameborder="no" border="0" framespacing="0">
<frame src="top.jsp" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
<frameset cols="187,*" frameborder="no" border="0" framespacing="0">
<frame src="left.jsp" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame" title="leftFrame" />
<frame src="right.jsp" name="rightFrame" id="rightFrame" title="rightFrame" />
</frameset>
<frame src="footer.jsp" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>
<noframes><body>
</body></noframes>
</html>
java文件
User.java
package com.bjsxt.pojo;
public class User {
private int uid;
private String uname;
private String pwd;
private String sex;
private int age;
private String birth;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
}
UserServlet.java
package com.bjsxt.servlet;
import com.bjsxt.pojo.User;
import com.bjsxt.service.UserService;
import com.bjsxt.service.impl.UserServiceimpl;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
import org.apache.log4j.Logger;
import java.io.IOException;
@WebServlet(name = "UserServlet", value = "/UserServlet")
public class UserServlet extends HttpServlet {
//声明日志对象
Logger logger = Logger.getLogger(UserServlet.class);
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置请求编码格式
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
//获取操作符
String oper = req.getParameter("oper");
if ("login".equals(oper)){
//调用登录处理方式
checkUserLongin(req,resp);
}else if ("reg".equals(oper)){
//调用注册功能
}else {
logger.debug("没有找到对应的操作符:"+oper);
//System.out.println("没有找到对应的操作符:"+oper);
}
}
//处理登录
private void checkUserLongin(HttpServletRequest req,HttpServletResponse resp){
//获取请求信息
String uname=req.getParameter("uname");
String pwd = req.getParameter("pwd");
System.out.println(uname+":"+pwd);
//处理请求信息
//获取service层对象
UserService us = new UserServiceimpl();
//校验
User u=us.checkUserLoginService(uname,pwd);
if (u!=null){
//获取session层对象
//重定向
try {
resp.setContentType("text/html; charset=utf-8");
resp.sendRedirect("main/main.jsp");
} catch (IOException e) {
e.printStackTrace();
}
}
//响应处理结果
//直接响应
//请求转发
}
}
UserService.java
package com.bjsxt.service;
import com.bjsxt.pojo.User;
public interface UserService {
/**
* 校验用户登录
* @param uname 用户名
* @param pwd 密码
* @return 返回查询到的用户信息
*/
User checkUserLoginService(String uname,String pwd);
}
UserServiceimpl.java
package com.bjsxt.service.impl;
import com.bjsxt.dao.UserDao;
import com.bjsxt.dao.impl.UserDaoImpl;
import com.bjsxt.pojo.User;
import com.bjsxt.service.UserService;
import org.apache.log4j.Logger;
public class UserServiceimpl implements UserService {
//声明日志对象
Logger logger=Logger.getLogger(UserServiceimpl.class);
//User u = ud.checkUserLoginDao(uname,pwd);
//声明Dao层对象
UserDao ud =new UserDaoImpl();
//用户登录
@Override
public User checkUserLoginService(String uname, String pwd) {
//打印日志
logger.debug(uname+"发起登录请求");
User u=ud.checkUserLoginDao(uname,pwd);
//判断
if (u!=null){
logger.debug(uname+"登录成功");
}else {
logger.debug(uname+"登录成功");
}
return u;
}
}
UserDao.java
package com.bjsxt.dao;
import com.bjsxt.pojo.User;
public interface UserDao {
/**
* 根据用户名和密码查询用户信息
* @param uname 用户名
* @param pwd 密码
* @return 返回查询到的用户信息
*/
User checkUserLoginDao(String uname,String pwd);
}
UserDaoImpl.java
package com.bjsxt.dao.impl;
import com.bjsxt.dao.UserDao;
import com.bjsxt.pojo.User;
import java.sql.*;
public class UserDaoImpl implements UserDao {
@Override
public User checkUserLoginDao(String uname, String pwd) {
//声明jdbc对象
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
//声明变量
User u =null;
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获取连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
//创建sql命令
String sql= "select * from t_user where uname=? and pwd=?";
//创建sql命令对象
ps=conn.prepareStatement(sql);
//给占位符赋值
ps.setString(1,uname);
ps.setString(2,pwd);
//执行sql
rs = ps.executeQuery();
//遍历结果
while (rs.next()){
//给变量赋值
u = new User();
u.setUid(rs.getInt("uid"));
u.setUname(rs.getString("uname"));
u.setPwd(rs.getString("pwd"));
u.setSex(rs.getString("sex"));
u.setAge(rs.getInt("age"));
u.setBirth(rs.getString("birth"));
}
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭资源
try {
rs.close();
} catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭资源
//返回结果
return u;
}
}