实现登录功能
设置首页
< welcome-file-list>
< welcome-file> login.jsp</ welcome-file>
</ welcome-file-list>
Dao层——userDao接口
public User getLoginUser ( Connection connection, String userCode, String userPassword) throws SQLException;
Dao层——userDaoImpl实现类
package Dao操作数据库. user;
import Dao操作数据库. BaseDao;
import 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 getLoginUser ( Connection connection, String userCode, String userPassword) throws SQLException {
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
User user = null;
if ( connection != null) {
String sql = "select * from smbms_user where userCode = ?" ;
Object[ ] params = { userCode} ;
resultSet = BaseDao. execute ( connection, preparedStatement, resultSet, sql, params) ;
if ( 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 ( "createdBy" ) ) ;
user. setCreationDate ( resultSet. getTimestamp ( "creationDate" ) ) ;
user. setModifyBy ( resultSet. getInt ( "modifyBy" ) ) ;
user. setModifyDate ( resultSet. getTimestamp ( "modifyDate" ) ) ;
}
BaseDao. release ( connection, preparedStatement, resultSet) ;
}
return user;
}
}
Service层——userService接口
public User login ( String userCode, String password) ;
Service层——userServiceImpl实现类
调用Dao层,login()中调用getloginUser() 与Dao实现的功能一样———查询用户是否存在于数据库,若存在,取得用户信息,用于Servlet中进行比对
package Service业务逻辑层. user;
import Dao操作数据库. BaseDao;
import Dao操作数据库. user. userDaoImpl;
import Pojo实体类. User;
import java. sql. Connection;
import java. sql. SQLException;
public class userServiceImpl implements userService {
private userDaoImpl 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. getLoginUser ( connection, userCode, password) ;
} catch ( SQLException e) {
e. printStackTrace ( ) ;
} finally {
BaseDao. release ( connection, null, null) ;
}
return user;
}
}
Servlet层——LoginServlet
进行信息比对,验证登录是否成功 登陆成功————resp重定向到主页 登陆失败————req请求转发到登录页面
package Servlet. user;
import Pojo实体类. User;
import Service业务逻辑层. user. userServiceImpl;
import 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 LoginServlet extends HttpServlet {
@Override
protected void doGet ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String userCode = req. getParameter ( "userCode" ) ;
String userPassword = req. getParameter ( "userPassword" ) ;
userServiceImpl 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) ;
}
}
在xml中映射Servlet
< servlet>
< servlet-name> LoginServlet</ servlet-name>
< servlet-class> Servlet.user.LoginServlet</ servlet-class>
</ servlet>
< servlet-mapping>
< servlet-name> LoginServlet</ servlet-name>
< url-pattern> /login.do</ url-pattern>
</ servlet-mapping>
实现注销功能
Servlet层——LogoutServlet
protected void doGet ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req. getSession ( ) . removeAttribute ( Constants. USER_SESSION) ;
resp. sendRedirect ( "login.jsp" ) ;
}
在xml中映射Servlet
< servlet>
< servlet-name> LogoutServlet</ servlet-name>
< servlet-class> Servlet.user.LogoutServlet</ servlet-class>
</ servlet>
< servlet-mapping>
< servlet-name> LogoutServlet</ servlet-name>
< url-pattern> /logout.html</ url-pattern>
</ servlet-mapping>
实现登录优化——拦截功能
Filter过滤器——SysFilter
public void doFilter ( ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpServletResponse = ( HttpServletResponse) response;
HttpServletRequest httpServletRequest = ( HttpServletRequest) request;
User user = ( User) httpServletRequest. getSession ( ) . getAttribute ( Constants. USER_SESSION) ;
if ( user== null) {
httpServletResponse. sendRedirect ( "error.jsp" ) ;
} else {
chain. doFilter ( request, response) ;
}
}
在xml中映射Filter
< filter>
< filter-name> SysFilter</ filter-name>
< filter-class> Filter过滤器.SysFilter</ filter-class>
</ filter>
< filter-mapping>
< filter-name> SysFilter</ filter-name>
< url-pattern> /jsp/*</ url-pattern>
</ filter-mapping>