SMBMS
1.项目搭建准备工作
1.1.搭建一个maven web项目
1.2.配置Tomcat
1.3.导包
<dependencies>
<dependency>
<groupId>javax.servlet.jsp
</groupId>
<artifactId>javax.servlet.jsp-api
</artifactId>
<version>2.3.3
</version>
<scope>provided
</scope>
</dependency>
<dependency>
<groupId>javax.servlet
</groupId>
<artifactId>javax.servlet-api
</artifactId>
<version>4.0.1
</version>
<scope>provided
</scope>
</dependency>
<dependency>
<groupId>mysql
</groupId>
<artifactId>mysql-connector-java
</artifactId>
<version>8.0.21
</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter
</groupId>
<artifactId>junit-jupiter-api
</artifactId>
<version>5.7.0
</version>
</dependency>
<dependency>
<groupId>org.projectlombok
</groupId>
<artifactId>lombok
</artifactId>
<version>1.18.14
</version>
<scope>provided
</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl
</groupId>
<artifactId>jstl-api
</artifactId>
<version>1.2
</version>
</dependency>
<dependency>
<groupId>taglibs
</groupId>
<artifactId>standard
</artifactId>
<version>1.1.2
</version>
</dependency>
</dependencies>
1.4.创建项目包结构
1.5.编写实体类
Address.java
package com
.mashiro
.pojo
;
import lombok
.Data
;
import java
.util
.Date
;
@Data
public class Address {
private Integer id
;
private String cootact
;
private String addressDesc
;
private String postCode
;
private String tel
;
private Integer createBy
;
private Date creationDate
;
private Integer modifyBy
;
private Date modifyDate
;
private Integer userId
;
}
Bill.java
package com
.mashiro
.pojo
;
import lombok
.Data
;
import java
.math
.BigDecimal
;
import java
.util
.Date
;
@Data
public class Bill {
private Integer id
;
private String billCode
;
private String productName
;
private String productDesc
;
private String productUnit
;
private String productCount
;
private BigDecimal totalPrice
;
private Integer isPayment
;
private Integer createdBy
;
private Date creationDate
;
private Integer modifyBy
;
private Date modifyDate
;
private Integer providerId
;
private String providerName
;
}
Provider.java
package com
.mashiro
.pojo
;
import lombok
.Data
;
import java
.util
.Date
;
@Data
public class Provider {
private Integer id
;
private String proCode
;
private String proName
;
private String proDesc
;
private String proContact
;
private String proPhone
;
private String proAddress
;
private String proFax
;
private Integer createdBy
;
private Date creationDate
;
private Date modifyDate
;
private Integer modifyBy
;
}
Role.java
package com
.mashiro
.pojo
;
import lombok
.Data
;
import java
.util
.Date
;
@Data
public class Role {
private Integer id
;
private String roleCode
;
private String roleName
;
private Integer createdBy
;
private Date creationDate
;
private Integer modifyBy
;
private Date modifyDate
;
}
User.java
package com
.mashiro
.pojo
;
import lombok
.Data
;
import java
.util
.Date
;
@Data
public class User {
private Integer id
;
private String userCode
;
private String userName
;
private String userPassword
;
private Integer gender
;
private Date birthday
;
private String phone
;
private String address
;
private Integer userRole
;
private Integer createdBy
;
private Date creationDate
;
private Integer modifyBy
;
private Date modifyDate
;
private Integer age
;
private String userRoleName
;
public Integer
getAge(){
return (new Date()).getYear()-birthday
.getYear();
}
}
1.6.编写基础公共类
dp.properties
driver=com.mysql.cj.jdbc.Driver
url=url=jdbc:mysql://localhost:3306/smbms?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
name=root
password=123456
BaseDao.java
package com
.mashiro
.dao
;
import java
.io
.IOException
;
import java
.io
.InputStream
;
import java
.sql
.*
;
import java
.util
.Properties
;
public class BaseDao {
private static String driver
;
private static String url
;
private static String name
;
private static String password
;
static {
InputStream resourceAsStream
= BaseDao
.class.getClassLoader().getResourceAsStream("dp.properties");
Properties properties
= new Properties();
try {
properties
.load(resourceAsStream
);
} catch (IOException e
) {
e
.printStackTrace();
}
driver
= properties
.getProperty("driver");
url
= properties
.getProperty("url");
name
= properties
.getProperty("name");
password
= properties
.getProperty("password");
}
public static Connection
getConnection() {
Connection connection
= null
;
try {
Class
.forName(driver
);
connection
= DriverManager
.getConnection(url
, name
, password
);
} catch (Exception e
) {
e
.printStackTrace();
}
return connection
;
}
public static ResultSet
execute(Connection connection
,String sql
,Object
[] params
,PreparedStatement statement
,ResultSet resultSet
) throws SQLException
{
statement
= connection
.prepareStatement(sql
);
for (int i
= 0; i
< params
.length
; i
++) {
statement
.setObject(i
+1,params
[i
]);
}
resultSet
= statement
.executeQuery();
return resultSet
;
}
public static int execute(Connection connection
,String sql
,Object
[] params
,PreparedStatement statement
) throws SQLException
{
statement
= connection
.prepareStatement(sql
);
for (int i
= 0; i
< params
.length
; i
++) {
statement
.setObject(i
+1,params
[i
]);
}
int i
= statement
.executeUpdate();
return i
;
}
public static boolean close(ResultSet resultSet
,PreparedStatement statement
,Connection connection
){
boolean flag
= true;
if (resultSet
!= null
){
try {
resultSet
.close();
resultSet
= null
;
} catch (SQLException e
) {
flag
= false;
e
.printStackTrace();
}
}
if (statement
!= null
){
try {
statement
.close();
statement
= null
;
} catch (SQLException e
) {
flag
= false;
e
.printStackTrace();
}
}
if (connection
!= null
){
try {
connection
.close();
connection
= null
;
} catch (SQLException e
) {
flag
= false;
e
.printStackTrace();
}
}
return flag
;
}
}
1.7.编写中文字符集编码过滤器
CharacterEncodingFilter.java
package com
.mashiro
.filter
;
import javax
.servlet
.*
;
import java
.io
.IOException
;
public class CharacterEncodingFilter implements Filter {
public void init(FilterConfig filterConfig
) throws ServletException
{
}
public void doFilter(ServletRequest servletRequest
, ServletResponse servletResponse
, FilterChain filterChain
) throws IOException
, ServletException
{
servletRequest
.setCharacterEncoding("utf-8");
servletResponse
.setCharacterEncoding("utf-8");
filterChain
.doFilter(servletRequest
,servletResponse
);
}
public void destroy() {
}
}
web.xml
<filter>
<filter-name>CharacterEncodingFilter
</filter-name>
<filter-class>com.mashiro.filter.CharacterEncodingFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter
</filter-name>
<url-pattern>/*
</url-pattern>
</filter-mapping>
1.8.导入静态资源
2.实现登录功能
2.1.编写前端页面 && 设置为欢迎页
Login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>系统登录 - 超市订单管理系统</title>
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath }/css/style.css" />
<script type="text/javascript">
/* if(top.location!=self.location){
top.location=self.location;
} */
</script>
</head>
<body class="login_bg">
<section class="loginBox">
<header class="loginHeader">
<h1>超市订单管理系统</h1>
</header>
<section class="loginCont">
<form class="loginForm" action="${pageContext.request.contextPath }/login.do" name="actionForm" id="actionForm" method="post" >
<div class="info">${error}</div>
<div class="inputbox">
<label>用户名:</label>
<input type="text" class="input-text" id="userCode" name="userCode" placeholder="请输入用户名" required/>
</div>
<div class="inputbox">
<label>密码:</label>
<input type="password" id="userPassword" name="userPassword" placeholder="请输入密码" required/>
</div>
<div class="subBtn">
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</div>
</form>
</section>
</section>
</body>
</html>
web.xml
<welcome-file-list>
<welcome-file>login.jsp
</welcome-file>
</welcome-file-list>
2.2.编写用户登录的Dao接口
public interface UserDao {
public User
getUser(Connection connection
,String userCode
) throws SQLException
;
}
2.3.编写Dao接口的实现类
package com
.mashiro
.dao
.user
;
import com
.mashiro
.dao
.BaseDao
;
import com
.mashiro
.pojo
.User
;
import java
.sql
.Connection
;
import java
.sql
.PreparedStatement
;
import java
.sql
.ResultSet
;
import java
.sql
.SQLException
;
public class UserDaoImpl implements UserDao{
public User
getUser(Connection connection
, String userCode
) throws SQLException
{
PreparedStatement preparedStatement
= null
;
ResultSet resultSet
= null
;
User user
= null
;
String sql
= "select * from `smbms_user` where userCode = ?";
Object
[] params
= {userCode
};
resultSet
= BaseDao
.execute(connection
, sql
, params
, preparedStatement
, resultSet
);
while (resultSet
.next()){
user
= new User();
user
.setId(resultSet
.getInt("id"));
user
.setUserCode(resultSet
.getString("userCode"));
user
.setUserName(resultSet
.getString("userName"));
user
.setUserPassword(resultSet
.getString("userPassword"));
user
.setGender(resultSet
.getInt("gender"));
user
.setBirthday(resultSet
.getDate("birthday"));
user
.setPhone(resultSet
.getString("phone"));
user
.setAddress(resultSet
.getString("address"));
user
.setUserRole(resultSet
.getInt("userRole"));
user
.setCreatedBy(resultSet
.getInt("createBy"));
user
.setCreationDate(resultSet
.getDate("creationDate"));
user
.setModifyBy(resultSet
.getInt("modifyBy"));
user
.setModifyDate(resultSet
.getDate("modifyDate"));
}
BaseDao
.close(resultSet
,preparedStatement
,null
);
return user
;
}
}
2.4.编写业务层接口
public interface UserLogin {
public User
Login(String userCode
,String password
) throws SQLException
;
}
2.5.编写业务层接口实现类
package com
.mashiro
.service
;
import com
.mashiro
.dao
.BaseDao
;
import com
.mashiro
.dao
.user
.UserDao
;
import com
.mashiro
.dao
.user
.UserDaoImpl
;
import com
.mashiro
.pojo
.User
;
import org
.junit
.jupiter
.api
.Test
;
import java
.sql
.Connection
;
import java
.sql
.SQLException
;
public class UserLoginImpl implements UserLogin {
private UserDao userDao
= null
;
public UserLoginImpl(){
userDao
= new UserDaoImpl();
}
public User
Login(String userCode
, String password
) {
Connection connection
= null
;
User user
= null
;
try {
connection
= BaseDao
.getConnection();
user
= userDao
.getUser(connection
, userCode
);
} catch (SQLException e
) {
e
.printStackTrace();
} finally {
BaseDao
.close(null
,null
,connection
);
}
return user
;
}
}
2.6.编写控制层代码
package com
.mashiro
.servlet
.user
;
import com
.mashiro
.pojo
.User
;
import com
.mashiro
.service
.user
.UserService
;
import com
.mashiro
.service
.user
.UserServiceImpl
;
import com
.mashiro
.util
.Constants
;
import lombok
.SneakyThrows
;
import javax
.servlet
.ServletException
;
import javax
.servlet
.http
.HttpServlet
;
import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;
import java
.io
.IOException
;
public class LoginServlet extends HttpServlet {
@SneakyThrows
@Override
protected void doGet(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
System
.out
.println("进入Servlet");
String userCode
= req
.getParameter("userCode");
String userPassword
= req
.getParameter("userPassword");
UserService userService
= new UserServiceImpl();
User user
= userService
.login(userCode
, userPassword
);
if (user
!= null
){
req
.getSession().setAttribute(Constants
.USER_SESSION
,user
);
resp
.sendRedirect("jsp/frame.jsp");
} else {
req
.setAttribute("error","用户名或密码不正确");
req
.getRequestDispatcher("login.jsp").forward(req
,resp
);
}
}
@Override
protected void doPost(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
doGet(req
, resp
);
}
}
2.7.注册Servlet
<servlet>
<servlet-name>LoginServlet
</servlet-name>
<servlet-class>com.mashiro.servlet.user.LoginServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet
</servlet-name>
<url-pattern>/login.do
</url-pattern>
</servlet-mapping>
2.8.运行错误处理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWW9ubIL-1603266788435)(C:\Users\25716\AppData\Roaming\Typora\typora-user-images\image-20201013133614835.png)]
解决方法: 在Tomcat下lib目录中导入mysql-connection-java的包
3.登录功能完善
3.1.注销登录功能
package com
.mashiro
.servlet
.user
;
import com
.mashiro
.util
.Constants
;
import javax
.servlet
.ServletException
;
import javax
.servlet
.http
.HttpServlet
;
import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;
import java
.io
.IOException
;
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
req
.getSession().removeAttribute(Constants
.USER_SESSION
);
resp
.sendRedirect(req
.getContextPath()+"/login.jsp");
}
@Override
protected void doPost(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
doGet(req
, resp
);
}
}
3.2.注册Servlet
<servlet>
<servlet-name>LogoutServlet
</servlet-name>
<servlet-class>com.mashiro.servlet.user.LogoutServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LogoutServlet
</servlet-name>
<url-pattern>/jsp/logout.do
</url-pattern>
</servlet-mapping>
3.3.权限拦截功能
package com
.mashiro
.filter
;
import com
.mashiro
.pojo
.User
;
import com
.mashiro
.util
.Constants
;
import javax
.servlet
.*
;
import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;
import java
.io
.IOException
;
public class SysFilter implements Filter {
public void init(FilterConfig filterConfig
) throws ServletException
{
}
public void doFilter(ServletRequest servletRequest
, ServletResponse servletResponse
, FilterChain filterChain
) throws IOException
, ServletException
{
HttpServletRequest req
= (HttpServletRequest
) servletRequest
;
HttpServletResponse resp
= (HttpServletResponse
) servletResponse
;
User user
= (User
) req
.getSession().getAttribute(Constants
.USER_SESSION
);
if (user
== null
){
resp
.sendRedirect(req
.getContextPath()+"/error.jsp");
} else {
filterChain
.doFilter(req
,resp
);
}
}
public void destroy() {
}
}
3.4.注册拦截器
<filter>
<filter-name>SysFilter
</filter-name>
<filter-class>com.mashiro.filter.SysFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>SysFilter
</filter-name>
<url-pattern>/jsp/*
</url-pattern>
</filter-mapping>
3.5.在service中添加密码判断,修改后代码如下
package com
.mashiro
.service
.user
;
import com
.mashiro
.dao
.BaseDao
;
import com
.mashiro
.dao
.user
.UserDao
;
import com
.mashiro
.dao
.user
.UserDaoImpl
;
import com
.mashiro
.pojo
.User
;
import java
.sql
.Connection
;
import java
.sql
.SQLException
;
public class UserServiceImpl implements UserService {
private UserDao userDao
;
public UserServiceImpl(){
userDao
= new UserDaoImpl();
}
public User
login(String userCode
, String password
) {
Connection connection
= null
;
User user
= null
;
try {
connection
= BaseDao
.getConnection();
user
= userDao
.getUser(connection
, userCode
);
} catch (Exception e
) {
e
.printStackTrace();
} finally {
BaseDao
.close(null
,null
,connection
);
}
if (user
!= null
&& user
.getUserPassword().equals(password
)){
return user
;
} else {
return null
;
}
}
}
4.用户密码修改
4.1.UserDao层增加密码修改接口
http
://localhost
:8080/smbms
/login
.jsp
4.2. Dao层实现类
public int updatePassword(Connection connection
, int id
, String password
) throws SQLException
{
System
.out
.println("进入了updatePassword");
String sql
= "update `smbms_user` set `userPassword` = ? where `id` = ?";
PreparedStatement prepareStatement
= null
;
int execute
= 0;
Object
[] params
= {password
,id
};
if (connection
!= null
){
execute
= BaseDao
.execute(connection
, prepareStatement
, sql
, params
);
}
BaseDao
.close(null
,prepareStatement
,null
);
return execute
;
}
4.3.业务层接口
public boolean updatePassword(int id
,String password
);
4.4.业务层实现类
public boolean updatePassword(int id
,String password
){
System
.out
.println("进入了UserServiceImpl updatePassword");
Connection connection
= null
;
boolean flag
= false;
try {
connection
= BaseDao
.getConnection();
if(userDao
.updatePassword(connection
, id
, password
) > 0){
flag
= true;
}
} catch (SQLException e
) {
e
.printStackTrace();
} finally {
BaseDao
.close(null
,null
,connection
);
}
return flag
;
}
4.5.Servlet层
package com
.mashiro
.servlet
.user
;
import com
.mashiro
.pojo
.User
;
import com
.mashiro
.service
.user
.UserService
;
import com
.mashiro
.service
.user
.UserServiceImpl
;
import com
.mashiro
.util
.Constants
;
import com
.mysql
.cj
.util
.StringUtils
;
import javax
.servlet
.ServletException
;
import javax
.servlet
.http
.HttpServlet
;
import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;
import java
.io
.IOException
;
public class UpdatePasswordServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
String oldpassword
= req
.getParameter("oldpassword");
String newpassword
= req
.getParameter("newpassword");
Object o
= req
.getSession().getAttribute(Constants
.USER_SESSION
);
boolean flag
= false;
if ( o
!= null
&& !StringUtils
.isNullOrEmpty(newpassword
)) {
UserService userService
= new UserServiceImpl();
flag
= userService
.updatePassword(((User
)o
).getId(),newpassword
);
if (flag
){
req
.setAttribute("message","修改密码成功,请退出后 用新密码登录。");
req
.getSession().removeAttribute(Constants
.USER_SESSION
);
} else {
req
.setAttribute("message","修改密码失败。");
}
} else {
req
.setAttribute("message","新密码不合法");
}
req
.getRequestDispatcher("/jsp/pwdmodify.jsp").forward(req
,resp
);
}
@Override
protected void doPost(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
doGet(req
, resp
);
}
}
4.6.注册servlet
<servlet>
<servlet-name>UpdatePasswordServlet
</servlet-name>
<servlet-class>com.mashiro.servlet.user.UpdatePasswordServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UpdatePasswordServlet
</servlet-name>
<url-pattern>/jsp/user.do
</url-pattern>
</servlet-mapping>
4.7.代码优化,提高代码复用
package com
.mashiro
.servlet
.user
;
import com
.mashiro
.pojo
.User
;
import com
.mashiro
.service
.user
.UserService
;
import com
.mashiro
.service
.user
.UserServiceImpl
;
import com
.mashiro
.util
.Constants
;
import com
.mysql
.cj
.util
.StringUtils
;
import javax
.servlet
.ServletException
;
import javax
.servlet
.http
.HttpServlet
;
import javax
.servlet
.http
.HttpServletRequest
;
import javax
.servlet
.http
.HttpServletResponse
;
import java
.io
.IOException
;
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
String method
= req
.getParameter("method");
if (method
!= null
&& method
.equals("savapwd")){
this.updatePassword(req
,resp
);
}
}
@Override
protected void doPost(HttpServletRequest req
, HttpServletResponse resp
) throws ServletException
, IOException
{
doGet(req
, resp
);
}
public void updatePassword(HttpServletRequest req
, HttpServletResponse resp
) {
String oldpassword
= req
.getParameter("oldpassword");
String newpassword
= req
.getParameter("newpassword");
Object o
= req
.getSession().getAttribute(Constants
.USER_SESSION
);
boolean flag
= false;
if ( o
!= null
&& !StringUtils
.isNullOrEmpty(newpassword
)) {
UserService userService
= new UserServiceImpl();
flag
= userService
.updatePassword(((User
)o
).getId(),newpassword
);
if (flag
){
req
.setAttribute("message","修改密码成功,请退出后 用新密码登录。");
req
.getSession().removeAttribute(Constants
.USER_SESSION
);
} else {
req
.setAttribute("message","修改密码失败。");
}
} else {
req
.setAttribute("message","新密码不合法");
}
req
.getRequestDispatcher("/jsp/pwdmodify.jsp").forward(req
,resp
);
}
}
5.密码修改优化
5.1.ajax局部动态更新
oldpassword
.on("blur",function(){
$
.ajax({
type
:"GET",
url
:path
+"/jsp/user.do",
data
:{method
:"pwdmodify",oldpassword
:oldpassword
.val()},
dataType
:"json",
success
:function(data
){
if(data
.result
== "true"){
validateTip(oldpassword
.next(),{"color":"green"},imgYes
,true);
}else if(data
.result
== "false"){
validateTip(oldpassword
.next(),{"color":"red"},imgNo
+ " 原密码输入不正确",false);
}else if(data
.result
== "sessionerror"){
validateTip(oldpassword
.next(),{"color":"red"},imgNo
+ " 当前用户session过期,请重新登录",false);
}else if(data
.result
== "error"){
validateTip(oldpassword
.next(),{"color":"red"},imgNo
+ " 请输入旧密码",false);
}
},
error
:function(data
){
validateTip(oldpassword
.next(),{"color":"red"},imgNo
+ " 请求错误",false);
}
});
5.2.UserServlet代码优化
@Override
protected void doGet(HttpServletRequest req
, HttpServletResponse resp
) {
String method
= req
.getParameter("method");
System
.out
.println(method
);
if (method
!= null
&& method
.equals("savepwd")){
this.updatePassword(req
,resp
);
} else if (method
!= null
&& method
.equals("pwdmodify")) {
this.verOldpassword(req
,resp
);
}
}
5.3.verOldpassword 密码验证方法编写
public void verOldpassword(HttpServletRequest req
, HttpServletResponse resp
){
Object o
= req
.getSession().getAttribute(Constants
.USER_SESSION
);
String oldpassword
= req
.getParameter("oldpassword");
Map
<String, String> map
= new HashMap<String, String>();
if (o
== null
){
System
.out
.println("Session失效或过期");
map
.put("result","sessionerror");
} else if (StringUtils
.isNullOrEmpty(oldpassword
)){
System
.out
.println("旧密码为空");
map
.put("result","error");
} else {
String userPassword
= ((User
) o
).getUserPassword();
if (oldpassword
.equals(userPassword
)) {
System
.out
.println("旧密码验证成功");
map
.put("result", "true");
} else {
System
.out
.println("旧密码不正确");
map
.put("result", "false");
}
}
try {
resp
.setContentType("application/json");
PrintWriter writer
= resp
.getWriter();
writer
.write(JSONArray
.toJSONString(map
));
writer
.flush();
writer
.close();
} catch (IOException e
) {
e
.printStackTrace();
}
}
5.4.注意事项
导入fastjson的包(alibaba)
<dependency>
<groupId>com.alibaba
</groupId>
<artifactId>fastjson
</artifactId>
<version>1.2.74
</version>
</dependency>
Tomcat中也要导入fastjson的包,否则会报500错误
6.用户管理功能实现
6.1.获取用户数量
6.1.1.UserDao
public int getUserCount(Connection connection
,String userName
,int userRole
) throws SQLException
;
6.1.2.UserDaoImpl
public int getUserCount(Connection connection
, String userName
, int userRole
) throws SQLException
{
PreparedStatement prepareStatement
= null
;
ResultSet resultSet
= null
;
ArrayList
<Object> list
= new ArrayList<Object>();
StringBuffer sb
= new StringBuffer();
int count
= 0;
if (connection
!= null
){
sb
.append("select COUNT(1) as count from `smbms_user` `u`, `smbms_role` `r` where `u`.userRole = `r`.id ");
if ( !StringUtils
.isNullOrEmpty(userName
) ){
sb
.append(" and `u`.userName like ?");
list
.add("'%"+userName
+"%'");
}
if (userRole
> 0){
sb
.append(" and `r`.id = ?");
list
.add(userRole
);
}
String sql
= sb
.toString();
Object
[] objects
= list
.toArray();
System
.out
.println("UserDaoImpl-->getUserCount()-->sql:\n"+sql
);
resultSet
= BaseDao
.execute(connection
, prepareStatement
,resultSet
, sql
, objects
);
if (resultSet
.next()){
count
= resultSet
.getInt("count");
}
BaseDao
.close(resultSet
,prepareStatement
,null
);
}
return count
;
}
6.1.3.UserService
public int getUserCount(String name
,int userRole
);
6.1.4.UserServiceImpl
public int getUserCount(String name
, int userRole
) {
Connection connection
= null
;
int userCount
= 0;
try {
connection
= BaseDao
.getConnection();
userCount
= userDao
.getUserCount(connection
, name
, userRole
);
} catch (SQLException e
) {
e
.printStackTrace();
} finally {
BaseDao
.close(null
,null
,connection
);
}
return userCount
;
}
6.2.获取用户信息列表
6.2.1.UserDao
public List
<User> getUserLimit(Connection connection
, String userName
, int userRole
, int startIndex
, int pageSize
) throws SQLException
;
6.2.2.UserDaoImpl
public List
<User> getUserLimit(Connection connection
, String userName
, int userRole
, int startIndex
, int pageSize
) throws SQLException
{
PreparedStatement preparedStatement
= null
;
ResultSet resultSet
= null
;
List
<User> userList
= new ArrayList<User>();
ArrayList
<Object> list
= new ArrayList<Object>();
if (connection
!= null
){
StringBuffer sb
= new StringBuffer();
sb
.append("select * from smbms_user, smbms_role where smbms_user.userRole = smbms_role.id");
if ( !StringUtils
.isNullOrEmpty(userName
) ){
sb
.append(" and userName like ?");
list
.add(userName
);
}
if (userRole
> 0){
sb
.append(" and userRole = ?");
list
.add(userRole
);
}
sb
.append(" order by smbms_user.id ASC limit ?,?");
list
.add(startIndex
);
list
.add(pageSize
);
System
.out
.println(sb
.toString());
resultSet
= BaseDao
.execute(connection
, preparedStatement
, resultSet
, sb
.toString(), list
.toArray());
while (resultSet
.next()){
User _user
= new User();
_user
.setId(resultSet
.getInt("id"));
_user
.setUserCode(resultSet
.getString("userCode"));
_user
.setUserName(resultSet
.getString("userName"));
_user
.setGender(resultSet
.getInt("gender"));
_user
.setBirthday(resultSet
.getDate("birthday"));
_user
.setPhone(resultSet
.getString("phone"));
_user
.setUserRole(resultSet
.getInt("userRole"));
_user
.setUserRoleName(resultSet
.getString("roleName"));
userList
.add(_user
);
}
}
return userList
;
}
6.2.3.UserService
public List
<User> getUserLimit(String userName
, int userRole
, int startIndex
, int pageSize
);
6.2.4.UserServiceImpl
public int getUserCount(String name
, int userRole
) {
Connection connection
= null
;
int userCount
= 0;
try {
connection
= BaseDao
.getConnection();
userCount
= userDao
.getUserCount(connection
, name
, userRole
);
} catch (SQLException e
) {
e
.printStackTrace();
} finally {
BaseDao
.close(null
,null
,connection
);
}
return userCount
;
}
6.3.获取角色信息列表
6.3.1.UserDao
public List
<Role> getRoleList(Connection connection
) throws SQLException
;
6.3.2.UserDaoImpl
public List
<Role> getRoleList(Connection connection
) throws SQLException
{
PreparedStatement preparedStatement
= null
;
ResultSet resultSet
= null
;
List
<Role> list
= new ArrayList<Role>();
if (connection
!= null
) {
String sql
= "select * from `smbms_role`";
Object
[] params
= {};
resultSet
= BaseDao
.execute(connection
, preparedStatement
, resultSet
, sql
, params
);
while (resultSet
.next()){
Role _role
= new Role();
_role
.setId(resultSet
.getInt("id"));
_role
.setRoleName(resultSet
.getString("roleName"));
_role
.setRoleCode(resultSet
.getString("roleCode"));
list
.add(_role
);
}
BaseDao
.close(resultSet
,preparedStatement
,null
);
}
return list
;
}
6.3.3.UserService
public List
<Role> getRoleList();
6.3.4.UserServiceImpl
public List
<Role> getRoleList() {
Connection connection
= null
;
List
<Role> list
= null
;
try {
connection
= BaseDao
.getConnection();
list
= userDao
.getRoleList(connection
);
} catch (SQLException e
) {
e
.printStackTrace();
} finally {
BaseDao
.close(null
,null
,connection
);
}
return list
;
}
6.4.UserServler
public void query(HttpServletRequest req
, HttpServletResponse resp
){
String queryUserName
= req
.getParameter("queryname");
String temp
= req
.getParameter("queryUserRole");
String pageIndex
= req
.getParameter("pageIndex");
int queryUserRole
= 0;
UserService userService
= new UserServiceImpl();
RoleService roleService
= new RoleServiceImpl();
int pageSize
= 5;
int currentPageNo
= 1;
if (queryUserName
== null
){
queryUserName
= "";
}
if (temp
!= null
&& !temp
.equals("")){
queryUserRole
= Integer
.parseInt(temp
);
}
if (pageIndex
!= null
) {
currentPageNo
= Integer
.parseInt(pageIndex
);
}
int totalCount
= userService
.getUserCount(queryUserName
, queryUserRole
);
PageSupport pageSupport
= new PageSupport();
pageSupport
.setPageSize(pageSize
);
pageSupport
.setCurrentPageNo(currentPageNo
);
pageSupport
.setTotalCount(totalCount
);
int totalPageCount
= pageSupport
.getTotalPageCount();
if (currentPageNo
< 1) {
currentPageNo
= 1;
} else if (currentPageNo
> totalPageCount
) {
currentPageNo
= totalPageCount
;
}
List
<User> userList
= userService
.getUserLimit(queryUserName
, queryUserRole
, (currentPageNo
-1)*pageSize
, pageSize
);
req
.setAttribute("userList",userList
);
List
<Role> roleList
= roleService
.getRoleList();
req
.setAttribute("roleList",roleList
);
req
.setAttribute("totalCount",totalCount
);
req
.setAttribute("currentPageNo",currentPageNo
);
req
.setAttribute("totalPageCount",totalPageCount
);
req
.setAttribute("queryUserName",queryUserName
);
req
.setAttribute("queryUserRole",queryUserRole
);
try {
req
.getRequestDispatcher("userlist.jsp").forward(req
,resp
);
} catch (ServletException e
) {
e
.printStackTrace();
} catch (IOException e
) {
e
.printStackTrace();
}
}