package controller;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import Entity.UserInfo;
import Manager.UserManager;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
* @author changliu
*/
public class AuthorizationController implements Filter {
private static final boolean debug = true;
// The filter configuration object we are associated with. If
// this value is null, this filter instance is not currently
// configured.
private FilterConfig filterConfig = null;
public AuthorizationController() {
}
private boolean checkAuthorization(HttpServletRequest request, int[] roles) throws Exception {
boolean authorized = false;
HttpSession session = request.getSession();
int uid = -1;
try {
uid = Integer.parseInt(session.getAttribute("uid").toString());
} catch (Exception ex) {
return authorized;
}
UserManager mgnr = new UserManager();
UserInfo user = mgnr.getUserById(uid);
if (user == null) {
return authorized;
}
//if user's role is one of the roles, authorized is true
for (int i = 0; i < roles.length; i++) {
if (user.role == roles[i]) {
authorized = true;
break;
}
}
return authorized;
}
private void doBeforeProcessing(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
if (debug) {
log("AuthorizationController:DoBeforeProcessing");
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String url;
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
url = req.getRequestURL().toString();
int[] roles = null;
if (url.contains("manage_car.jsp") || url.contains("manage_employee.jsp")) {
roles = new int[1];
roles[0] = 0;
} else if (url.contains("rent_car.jsp") || url.contains("return_car.jsp")){
roles = new int[1];
roles[0] = 1;
}
try {
if (this.checkAuthorization(req, roles) == false) {
res.sendRedirect("error_page.jsp?code=1");
} else {
//RequestDispatcher dispatcher = request.getRequestDispatcher("manage_car.jsp");
//dispatcher.forward(request, response);
}
} catch (Exception ex) {
res.sendRedirect("error_page.jsp?code=2");
}
}
private void doAfterProcessing(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
if (debug) {
log("AuthorizationController:DoAfterProcessing");
}
// Write code here to process the request and/or response after
// the rest of the filter chain is invoked.
// For example, a logging filter might log the attributes on the
// request object after the request has been processed.
/*
for (Enumeration en = request.getAttributeNames(); en.hasMoreElements(); ) {
String name = (String)en.nextElement();
Object value = request.getAttribute(name);
log("attribute: " + name + "=" + value.toString());
}
*/
// For example, a filter might append something to the response.
/*
PrintWriter respOut = new PrintWriter(response.getWriter());
respOut.println("<P><B>This has been appended by an intrusive filter.</B>");
*/
}
/**
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
* @param chain The filter chain we are processing
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
if (debug) {
log("AuthorizationController:doFilter()");
}
doBeforeProcessing(request, response);
Throwable problem = null;
try {
chain.doFilter(request, response);
} catch (Throwable t) {
// If an exception is thrown somewhere down the filter chain,
// we still want to execute our after processing, and then
// rethrow the problem after that.
problem = t;
t.printStackTrace();
}
doAfterProcessing(request, response);
// If there was a problem, we want to rethrow it if it is
// a known type, otherwise log it.
if (problem != null) {
if (problem instanceof ServletException) {
throw (ServletException) problem;
}
if (problem instanceof IOException) {
throw (IOException) problem;
}
sendProcessingError(problem, response);
}
}
/**
* Return the filter configuration object for this filter.
*/
public FilterConfig getFilterConfig() {
return (this.filterConfig);
}
/**
* Set the filter configuration object for this filter.
*
* @param filterConfig The filter configuration object
*/
public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
/**
* Destroy method for this filter
*/
public void destroy() {
}
/**
* Init method for this filter
*/
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
if (filterConfig != null) {
if (debug) {
log("AuthorizationController:Initializing filter");
}
}
}
/**
* Return a String representation of this object.
*/
@Override
public String toString() {
if (filterConfig == null) {
return ("AuthorizationController()");
}
StringBuffer sb = new StringBuffer("AuthorizationController(");
sb.append(filterConfig);
sb.append(")");
return (sb.toString());
}
private void sendProcessingError(Throwable t, ServletResponse response) {
String stackTrace = getStackTrace(t);
if (stackTrace != null && !stackTrace.equals("")) {
try {
response.setContentType("text/html");
PrintStream ps = new PrintStream(response.getOutputStream());
PrintWriter pw = new PrintWriter(ps);
pw.print("<html>\n<head>\n<title>Error</title>\n</head>\n<body>\n"); //NOI18N
// PENDING! Localize this for next official release
pw.print("<h1>The resource did not process correctly</h1>\n<pre>\n");
pw.print(stackTrace);
pw.print("</pre></body>\n</html>"); //NOI18N
pw.close();
ps.close();
response.getOutputStream().close();
} catch (Exception ex) {
}
} else {
try {
PrintStream ps = new PrintStream(response.getOutputStream());
t.printStackTrace(ps);
ps.close();
response.getOutputStream().close();
} catch (Exception ex) {
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
car_rental_sys.zip_java租车_租车_租车系统 (572个子文件)
AuthorizationController.class 6KB
SearchReservation_servlet.class 5KB
SearchCar_servlet.class 5KB
ReservationManager.class 5KB
UserManager.class 5KB
ReturnCar_servlet.class 5KB
Reserve_servlet.class 4KB
FindCar_servlet.class 4KB
CarManager.class 4KB
UserManagerTest.class 3KB
LocationManager.class 3KB
DBHelper.class 3KB
ReservationManagerTest.class 3KB
CarTypeManager.class 3KB
CreditCardManager.class 3KB
CarTypeManagerTest.class 2KB
ReservationInfo.class 2KB
LocationManagerTest.class 2KB
CarManagerTest.class 2KB
Encryptor.class 2KB
DBConnection.class 2KB
BillingManager.class 1KB
LocationInfo.class 1KB
UserInfo.class 1KB
CarTypeInfo.class 1024B
CarInfo.class 998B
BillingInfo.class 452B
CreditCardInfo.class 447B
bootstrap.css 128KB
bootstrap.css 128KB
bootstrap.min.css 104KB
bootstrap.min.css 104KB
jquery-ui.css 33KB
jquery-ui.css 33KB
bootstrap-responsive.css 24KB
bootstrap-responsive.css 24KB
bootstrap-responsive.min.css 16KB
bootstrap-responsive.min.css 16KB
bootstrap-select.min.css 5KB
bootstrap-select.min.css 5KB
validationEngine.jquery.css 4KB
validationEngine.jquery.css 4KB
SelectCar.css 2KB
SelectCar.css 2KB
reserve_car.css 2KB
reserve_car.css 2KB
home_page.css 1KB
home_page.css 1KB
global.css 1KB
global.css 1KB
jquery-ui-timepicker-addon.css 570B
jquery-ui-timepicker-addon.css 570B
wc.db 147KB
gfv3ee6.dpf 476B
.DS_Store 15KB
.DS_Store 12KB
.DS_Store 12KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
entries 2B
format 2B
AuthorizationController.java 8KB
SearchReservation_servlet.java 8KB
SearchCar_servlet.java 7KB
UserManager.java 7KB
ReturnCar_servlet.java 6KB
ReservationManager.java 5KB
FindCar_servlet.java 5KB
Reserve_servlet.java 5KB
UserManagerTest.java 5KB
CarManager.java 5KB
ReservationInfo.java 4KB
CarManagerTest.java 4KB
ReservationManagerTest.java 3KB
CarTypeManagerTest.java 3KB
CreditCardManager.java 3KB
LocationManager.java 3KB
DBHelper.java 2KB
CarTypeManager.java 2KB
LocationManagerTest.java 2KB
LocationInfo.java 2KB
UserInfo.java 2KB
BillingManager.java 2KB
Encryptor.java 1KB
CarTypeInfo.java 1KB
DBConnection.java 1KB
CarInfo.java 1KB
BillingInfo.java 401B
CreditCardInfo.java 380B
LoadTest.jmx 6KB
load_test.jmx 5KB
nahid.jpg 708KB
nahid.jpg 708KB
chang.jpg 97KB
chang.jpg 97KB
wenrui.jpg 62KB
wenrui.jpg 62KB
共 572 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
钱亚锋
- 粉丝: 86
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功