一、注册登录项目
项目源码下载,提取码:h49z
1.1 创建数据库的SQL
CREATE TABLE `member` (
`id` varchar ( 200 ) NOT NULL,
`name` varchar ( 20 ) NOT NULL,
`password` varchar ( 20 ) NOT NULL,
PRIMARY KEY ( `id`)
) ENGINE= InnoDB DEFAULT CHARSET= utf8
CREATE TABLE `emp` (
`id` varchar ( 200 ) NOT NULL,
`NAME` varchar ( 20 ) NOT NULL,
`age` int ( 11 ) DEFAULT NULL,
`content` varchar ( 20 ) DEFAULT NULL,
`img` longblob,
PRIMARY KEY ( `id`)
) ENGINE= InnoDB DEFAULT CHARSET= utf8
1.2 代码
1.2.1 dao层
EmpDao.java
public class EmpDao {
public void insert ( EmpEntity entity) {
try {
String sql= "insert into emp values(?,?,?,?,?)" ;
QueryRunner qr = JdbcUtil. getQr ( ) ;
qr. update ( sql, entity. getId ( ) , entity. getName ( ) , entity. getAge ( ) , entity. getContent ( ) , null) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
throw new RuntimeException ( e) ;
}
}
public void selectAll ( PageBean< EmpEntity> page) {
try {
Integer totalCount = count ( ) ;
page. setTotalCount ( totalCount) ;
if ( page. getCurrentPage ( ) <= 0 ) {
page. setCurrentPage ( 1 ) ;
} else {
if ( page. getTotalPage ( ) < page. getCurrentPage ( ) ) {
page. setCurrentPage ( page. getTotalPage ( ) ) ;
}
}
int index = ( page. getCurrentPage ( ) - 1 ) * page. getPageCount ( ) ;
int end= page. getPageCount ( ) ;
String sql= "select * from emp limit ?,?" ;
QueryRunner qr = JdbcUtil. getQr ( ) ;
List< EmpEntity> data = qr. query ( sql, new BeanListHandler < EmpEntity> ( EmpEntity. class ) , index, end) ;
page. setData ( data) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
}
public Integer count ( ) {
try {
String sql= "select count(*) from emp" ;
QueryRunner qr = JdbcUtil. getQr ( ) ;
return Integer. valueOf ( Long. valueOf ( qr. query ( sql, new ScalarHandler < Long> ( ) ) ) . toString ( ) ) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
return null;
}
}
MemberDao .java
ublic class MemberDao {
public void insert ( MemberEntity entity) {
try {
String sql= "insert into member values(?,?,?)" ;
QueryRunner qr = JdbcUtil. getQr ( ) ;
qr. update ( sql, entity. getId ( ) , entity. getName ( ) , entity. getPassword ( ) ) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
}
public MemberEntity findByName ( String name) {
try {
String sql= "select * from member where name=?" ;
QueryRunner qr = JdbcUtil. getQr ( ) ;
return qr. query ( sql, new BeanHandler < MemberEntity> ( MemberEntity. class ) , name) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
return null;
}
}
1.2.2 实体层
EmpEntity.java
public class EmpEntity {
private String id ;
private String name;
private int age;
private String content;
private Blob img;
public String getId ( ) {
return id;
}
public void setId ( String id) {
this . id = id;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public int getAge ( ) {
return age;
}
public void setAge ( int age) {
this . age = age;
}
public String getContent ( ) {
return content;
}
public void setContent ( String content) {
this . content = content;
}
public Blob getImg ( ) {
return img;
}
public void setImg ( Blob img) {
this . img = img;
}
}
MemberEntity .java
public class MemberEntity {
private String id;
private String name;
private String password;
public String getId ( ) {
return id;
}
public void setId ( String 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;
}
}
PageBean.java
public class PageBean < T> {
private int currentPage;
private int pageCount= 4 ;
private int totalPage;
private int totalCount;
private List< T> data;
public int getCurrentPage ( ) {
return currentPage;
}
public void setCurrentPage ( int currentPage) {
this . currentPage = currentPage;
}
public int getPageCount ( ) {
return pageCount;
}
public void setPageCount ( int pageCount) {
this . pageCount = pageCount;
}
public int getTotalPage ( ) {
if ( totalCount% pageCount> 0 ) {
totalPage= totalCount/ pageCount+ 1 ;
} else {
totalPage= totalCount/ pageCount;
}
return totalPage;
}
public void setTotalPage ( int totalPage) {
this . totalPage = totalPage;
}
public int getTotalCount ( ) {
return totalCount;
}
public void setTotalCount ( int totalCount) {
this . totalCount = totalCount;
}
public List< T> getData ( ) {
return data;
}
public void setData ( List< T> data) {
this . data = data;
}
@Override
public String toString ( ) {
return "PageBean [currentPage=" + currentPage + ", pageCount=" + pageCount + ", totalPage=" + totalPage
+ ", totalCount=" + totalCount + ", data=" + data + "]" ;
}
}
1.2.3 filter
EncodingFilter .java
public class EncodingFilter implements Filter {
@Override
public void destroy ( ) {
}
@Override
public void doFilter ( ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req= ( HttpServletRequest) request;
HttpServletResponse resp= ( HttpServletResponse) response;
req. setCharacterEncoding ( "utf-8" ) ;
resp. setContentType ( "text/html;charset=utf-8" ) ;
chain. doFilter ( req, resp) ;
}
@Override
public void init ( FilterConfig filterConfig) throws ServletException {
}
}
MemberFilter.java
public class MemberFilter implements Filter {
private MemberService memberService= new MemberService ( ) ;
@Override
public void destroy ( ) {
}
private List< String> white ;
@Override
public void init ( FilterConfig filterConfig) throws ServletException {
white = new ArrayList< String> ( ) ;
white. add ( "/emp/register.jsp" ) ;
white. add ( "/emp/login.jsp" ) ;
white. add ( "/emp/member" ) ;
}
@Override
public void doFilter ( ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req= ( HttpServletRequest) request;
HttpServletResponse resp= ( HttpServletResponse) response;
String requestURI = req. getRequestURI ( ) ;
for ( String str: white) {
System. out. println ( requestURI) ;
if ( str. equals ( requestURI) ) { chain. doFilter ( req, resp) ; return ; }
}
HttpSession session = req. getSession ( false ) ;
if ( session== null ) {
req. getRequestDispatcher ( "./login.jsp" ) . forward ( req, resp) ;
return ;
}
String membenrName= ( String) session. getAttribute ( "memberName" ) ;
if ( membenrName== null || "" . equals ( membenrName) ) {
req. getRequestDispatcher ( "./login.jsp" ) . forward ( req, resp) ;
return ;
}
chain. doFilter ( req, resp) ;
}
}
1.2.4 exception
MemberException.java
public class MemberException extends RuntimeException {
public MemberException ( String msg) {
super ( msg) ;
}
}
1.2.5 service
EmpService .java
public class EmpService {
private EmpDao empDao= new EmpDao ( ) ;
public void select ( PageBean< EmpEntity> pageBean) {
empDao. selectAll ( pageBean) ;
}
public void addEmp ( EmpEntity emp) {
emp. setId ( UUID. randomUUID ( ) . toString ( ) ) ;
empDao. insert ( emp) ;
}
}
MemberService .java
public class MemberService {
private MemberDao memberDao= new MemberDao ( ) ;
public void register ( MemberEntity entity) {
if ( entity. getName ( ) == null || "" . equals ( entity. getName ( ) ) ) {
throw new MemberException ( "注册会员名为空" ) ;
}
if ( entity. getPassword ( ) == null || "" . equals ( entity. getPassword ( ) ) ) {
throw new MemberException ( "注册密码为空" ) ;
}
entity. setId ( UUID. randomUUID ( ) . toString ( ) ) ;
MemberEntity exist = memberDao. findByName ( entity. getName ( ) ) ;
if ( exist!= null ) {
throw new MemberException ( "注册会员名称重复" ) ;
}
memberDao. insert ( entity) ;
}
public void login ( MemberEntity entity) {
if ( entity. getName ( ) == null || "" . equals ( entity. getName ( ) ) ) {
throw new MemberException ( "会员名为空" ) ;
}
if ( entity. getPassword ( ) == null || "" . equals ( entity. getPassword ( ) ) ) {
throw new MemberException ( "密码为空" ) ;
}
MemberEntity exist = memberDao. findByName ( entity. getName ( ) ) ;
if ( exist== null ) {
throw new MemberException ( "该会员不存在" ) ;
}
if ( ! exist. getPassword ( ) . equals ( entity. getPassword ( ) ) ) {
throw new MemberException ( "密码不正确" ) ;
}
}
}
1.2.6 util
Convert2Bean .java
public class Convert2Bean {
public static < T> T getBean ( HttpServletRequest req, Class< T> clazz) {
try {
T t= clazz. newInstance ( ) ;
Map< String, String[ ] > map = req. getParameterMap ( ) ;
BeanUtils. populate ( t, map) ;
return t;
} catch ( Exception e) {
e. printStackTrace ( ) ;
}
return null ;
}
}
JdbcUtil .java
public class JdbcUtil {
private static ComboPooledDataSource dataSource;
static {
dataSource= new ComboPooledDataSource ( ) ;
}
public static QueryRunner getQr ( ) {
return new QueryRunner ( dataSource) ;
}
}
1.2.6 controller
EmpListController .java
public class EmpListController extends HttpServlet {
private EmpService empService= new EmpService ( ) ;
@Override
protected void doGet ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this . doPost ( req, resp) ;
}
@Override
protected void doPost ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req. getParameter ( "method" ) ;
if ( "add" . equals ( method) ) {
addEmp ( req, resp) ;
}
if ( "list" . equals ( method) ) {
selectAll ( req, resp) ;
}
}
private void selectAll ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PageBean pageBean = Convert2Bean. getBean ( req, PageBean. class) ;
empService. select ( pageBean) ;
req. setAttribute ( "pageBean" , pageBean) ;
req. getRequestDispatcher ( "./list.jsp" ) . forward ( req, resp) ;
}
private void addEmp ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
EmpEntity emp = Convert2Bean. getBean ( req, EmpEntity. class) ;
empService. addEmp ( emp) ;
resp. setHeader ( "refresh" , "3;url=/emp/emp?method=list" ) ;
resp. getWriter ( ) . write ( "新增成功,3秒后返回主页" ) ;
}
}
MemberController .java
public class MemberController extends HttpServlet {
private MemberService memberService= new MemberService ( ) ;
@Override
protected void doGet ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this . doPost ( req, resp) ;
}
@Override
protected void doPost ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req. getParameter ( "method" ) ;
if ( "login" . equals ( method) ) {
doLogin ( req, resp) ;
}
if ( "register" . equals ( method) ) {
doRegister ( req, resp) ;
}
if ( "out" . equals ( method) ) {
doOut ( req, resp) ;
}
}
private void doOut ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req. getSession ( false ) ;
session. invalidate ( ) ;
req. getRequestDispatcher ( "./login.jsp" ) . forward ( req, resp) ;
}
private void doRegister ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
MemberEntity member = Convert2Bean. getBean ( req, MemberEntity. class) ;
try {
memberService. register ( member) ;
} catch ( MemberException e) {
e. printStackTrace ( ) ;
req. setAttribute ( "msg" , e. getMessage ( ) ) ;
req. getRequestDispatcher ( "/register.jsp" ) . forward ( req, resp) ;
return ;
}
HttpSession session = req. getSession ( ) ;
session. setAttribute ( "memberName" , member. getName ( ) ) ;
resp. setHeader ( "refresh" , "3;url=/emp/emp?method=list" ) ;
resp. getWriter ( ) . write ( "注册成功,3秒后跳转" ) ;
}
private void doLogin ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
MemberEntity member = Convert2Bean. getBean ( req, MemberEntity. class) ;
try {
memberService. login ( member) ;
} catch ( MemberException e) {
e. printStackTrace ( ) ;
req. setAttribute ( "msg" , e. getMessage ( ) ) ;
req. getRequestDispatcher ( "/login.jsp" ) . forward ( req, resp) ;
return ;
}
HttpSession session = req. getSession ( ) ;
session. setAttribute ( "memberName" , member. getName ( ) ) ;
resp. setHeader ( "refresh" , "3;url=/emp/emp?method=list" ) ;
resp. getWriter ( ) . write ( "登录成功,3秒后跳转" ) ;
}
}
1.2.7 配置
c3p0-config.xml
< c3p0- config>
< ! -- 默认数据库 -- >
< default- config>
< property name= "jdbcUrl" > jdbc: mysql: / / localhost: 3306 / day11< / property>
< property name= "driverClass" > com. mysql. jdbc. Driver< / property>
< property name= "user" > root< / property>
< property name= "password" > root< / property>
< property name= "initialPoolSize" > 3 < / property>
< property name= "maxPoolSize" > 6 < / property>
< property name= "maxIdleTime" > 1000 < / property>
< / default- config>
< ! -- 可以使用多数据源
< named- config name= "db2" >
< property name= "jdbcUrl" > jdbc: mysql: / / localhost: 3306 / test< / property>
< property name= "driverClass" > com. mysql. jdbc. Driver< / property>
< property name= "user" > root< / property>
< property name= "password" > root< / property>
< property name= "initialPoolSize" > 3 < / property>
< property name= "maxPoolSize" > 6 < / property>
< property name= "maxIdleTime" > 1000 < / property>
< / named- config>
-- >
< / c3p0- config>
web.xml
< ? xml version= "1.0" encoding= "UTF-8" ? >
< web- app version= "2.5"
xmlns= "http://java.sun.com/xml/ns/javaee"
xmlns: xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= "http: / / java. sun. com/ xml/ ns/ javaee
http: / / java. sun. com/ xml/ ns/ javaee/ web- app_2_5. xsd">
< ! -- 过滤器1 -- >
< filter>
< filter- name> encoding< / filter- name>
< filter- class > org. jsoft. filter. EncodingFilter< / filter- class >
< / filter>
< filter- mapping>
< filter- name> encoding< / filter- name>
< url- pattern>
1.2.8 前端
login.jsp
< % @ page language= "java" contentType= "text/html; charset=UTF-8"
pageEncoding= "UTF-8" % >
< ! DOCTYPE html>
< html>
< head>
< meta charset= "UTF-8" >
< title> Login< / title>
< / head>
< body>
< h1> 登录< / h1> ${ msg}
< form action= "./member?method=login" method= "post" >
< table style= "width:400px; margin:100px auto;" >
< tr>
< td> 用户名: < / td>
< td> < input type= "text" name= "name" / > < / td>
< / tr>
< tr>
< td> 密码: < / td>
< td> < input type= "password" name= "password" / > < / td>
< / tr>
< tr>
< td colspan= "2" align= "center" >
< input type= "submit" value= "提交" / >
< / td>
< / tr>
< / table>
< / form>
< / body>
< / html>
register.jsp
< % @ page language= "java" contentType= "text/html; charset=UTF-8"
pageEncoding= "UTF-8" % >
< ! DOCTYPE html>
< html>
< head>
< meta charset= "UTF-8" >
< title> Register< / title>
< / head>
< body>
< h1> 注册< / h1> ${ msg }
< form action= "./member?method=register" method= "post" >
< table style= "width:400px; margin:100px auto;" >
< tr>
< td> 用户名: < / td>
< td> < input type= "text" name= "name" / > < / td>
< / tr>
< tr>
< td> 密码: < / td>
< td> < input type= "password" name= "password" / > < / td>
< / tr>
< tr>
< td colspan= "2" align= "center" >
< input type= "submit" value= "提交" / >
< / td>
< / tr>
< / table>
< / form>
< / body>
< / html>
list.jsp
< % @ page language= "java" contentType= "text/html; charset=UTF-8"
pageEncoding= "UTF-8" % >
< % @taglib uri= "http://java.sun.com/jsp/jstl/core" prefix= "c" % >
< ! DOCTYPE html>
< html>
< head>
< meta charset= "UTF-8" >
< title> Login< / title>
< / head>
< body>
< div>
欢迎${ sessionScope. memberName} 同学, 您好!! < a href= "./member?method=out" > 注销< / a>
< / div>
< a href= "${ pageContext. request. contextPath} /addEmp.jsp" > 新增员工< / a>
< table border= "1" cellspacing= "1" cellpadding= "0" style= "margin:100px auto;" >
< tr>
< th> index< / th>
< th> 员工编号< / th>
< th> 名称< / th>
< th> 年龄< / th>
< th> 详细介绍< / th>
< / tr>
< c: if test= "${ not empty requestScope. pageBean. data } " >
< c: forEach items= "${ requestScope. pageBean. data} " var = "item" varStatus= "indexObj" >
< tr>
< th> ${ indexObj. count } < / th>
< th> ${ item. id} < / th>
< th> ${ item. name} < / th>
< th> ${ item. age} < / th>
< th> ${ item. content} < / th>
< / tr>
< / c: forEach>
< / c: if >
< tr>
< th colspan= "5" >
< a href= "${ pageContext. request. contextPath} /emp?method=list¤tPage=1" > 首页< / a>
< a href= "${ pageContext. request. contextPath} /emp?method=list¤tPage=${ pageBean. totalPage} " > 末页< / a>
< a href= "${ pageContext. request. contextPath} /emp?method=list¤tPage=${ pageBean. currentPage - 1 } " > 上一页< / a>
< a href= "${ pageContext. request. contextPath} /emp?method=list¤tPage=${ pageBean. currentPage + 1 } " > 下一页< / a>
< / th>
< / tr>
< / table>
< / body>
< / html>
addEmp.jsp
< % @ page language= "java" contentType= "text/html; charset=UTF-8"
pageEncoding= "UTF-8" % >
< ! DOCTYPE html>
< html>
< head>
< meta charset= "UTF-8" >
< title> Insert title here< / title>
< / head>
< body>
< form action= "/emp/emp?method=add" method= "post" >
< table border= "1" cellspacing= "1" style= "margin:100px suto;" >
< tr>
< td> 姓名< / td>
< td> < input type= "text" name= "name" / > < / td>
< / tr>
< tr>
< td> 年龄< / td>
< td> < input type= "text" name= "age" / > < / td>
< / tr>
< tr>
< td> 内容< / td>
< td> < input type= "text" name= "content" / > < / td>
< / tr>
< tr align= "center" >
< td colspan= "2" > < input type= "submit" value= "提交" / > < / td>
< / tr>
< / table>
< / form>
< / body>
< / html>
1.4 实现效果
登录界面
注册界面
列表展示界面