日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

javaweb項目開發(fā)案例 java項目開發(fā)案例經(jīng)典( 二 )


{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user=request.getSession().getAttribute(“l(fā)oginUser”);
if(user==null)
{
//未登陸,返回登陸頁面
request.setAttribute(“msg”,“沒有權(quán)限請先登陸”);
request.getRequestDispatcher(“/index.html”).forward(request,response);
return false;
}
else
{
//已登陸,放行請求
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//登陸后,將之前存儲在session里面的登錄憑證銷毀,無論是否存在憑證,都執(zhí)行銷毀操作
request.getSession().removeAttribute(“l(fā)oginUser”);
}
}
2.如果登錄成功,那么往session中存放一個username作為登錄憑證【javaweb項目開發(fā)案例 java項目開發(fā)案例經(jīng)典】@Controller
public class LoginController
{
@PostMapping(“/user/login”)
public String Login(@RequestParam(“username”)String username,
@RequestParam(“password”)String password
, Map map, HttpSession session)
{
if(username.equals(“大忽悠”)&&“123456”.equals(password))
{
session.setAttribute(“l(fā)oginUser”,username);
//登錄成功
return “redirect:/main.html”;
}
//登錄失敗
map.put(“msg”,“用戶名或密碼錯誤”);
return “index”;
}
}
3.在springmvc擴展類中將自定義的攔截器進行注冊//使用WebMvcConfigurerAdapter可以來擴展SpringMvc的功能
@Configuration
public class myConfig extends WebMvcConfigurerAdapter
{
//所有的WebMvcConfigurerAdapter組件都會一起起作用
@Bean//將容器注冊在容器中
public WebMvcConfigurerAdapter addViewControllers()
{
WebMvcConfigurerAdapter adapter=new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController(“/”).setViewName(“index”);
registry.addViewController(“/index.html”).setViewName(“index”);
registry.addViewController(“/main.html”).setViewName(“success”);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHanlderIntercept()).addPathPatterns(“/**”)//攔截任意多層路徑下的所有請求
.excludePathPatterns(“/index.html”,”/”,”/user/login”);//某些請求不進行攔截
}
};
return adapter;
}
@Bean
//在SpringMVC擴展類中,將剛才寫的區(qū)域信息解析器放到容器中
public LocaleResolver localeResolver()
{
return new MyLocaleResolver();
}
}
小細節(jié):如果已經(jīng)登錄成功了,那么session域中就會存在已經(jīng)登錄的憑證,如果此時回退到登錄頁面,那么就可以不登錄直接訪問對應(yīng)網(wǎng)頁,這個的解決方法如下:使用下面這個解決方法的前提是攔截器只攔截登錄頁面,而不是所有請求,不然當?shù)卿洺晒?,點擊當前頁面的任何請求,都會回到登錄頁面@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//登陸后,將之前存儲在session里面的登錄憑證銷毀,無論是否存在憑證,都執(zhí)行銷毀操作
request.getSession().removeAttribute(“l(fā)oginUser”);
}
攔截器如果攔截所有請求,靜態(tài)資源也會被攔截,因此注意排除掉對應(yīng)的靜態(tài)資源訪問路徑CRUD—員工列表

推薦閱讀