日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

JavaWeb黑马旅游网-学习笔记04【BaseServlet抽取】

發(fā)布時(shí)間:2024/9/30 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaWeb黑马旅游网-学习笔记04【BaseServlet抽取】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • Java后端 學(xué)習(xí)路線 筆記匯總表【黑馬程序員】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記01【準(zhǔn)備工作】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記02【注冊(cè)功能】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記03【登陸和退出功能】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記04【BaseServlet抽取】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記05【分類(lèi)數(shù)據(jù)展示功能】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記06【旅游線路分頁(yè)展示分頁(yè)展示】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記07【旅游線路查詢(xún)】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記08【旅游線路詳情】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記09【旅游線路收藏】
  • JavaWeb黑馬旅游網(wǎng)-學(xué)習(xí)筆記10【項(xiàng)目代碼】
  • 目錄

    24-BaseServlet抽取

    Idea控制臺(tái)中文亂碼解決

    BaseServlet.java

    25-BaseServlet抽取_UserServlet&頁(yè)面路徑改寫(xiě)

    UserServlet.java

    頁(yè)面路徑改寫(xiě)

    login.html

    header.html

    register.html

    UserServiceImpl發(fā)送郵件

    查看請(qǐng)求


    24-BaseServlet抽取

    ?

    優(yōu)化servlet目的:減少Servlet的數(shù)量,現(xiàn)在是一個(gè)功能一個(gè)Servlet,將其優(yōu)化為一個(gè)模塊一個(gè)Servlet,相當(dāng)于在數(shù)據(jù)庫(kù)中的一張表對(duì)應(yīng)一個(gè)Servlet,在Servlet中提供不同的方法,完成用戶(hù)的請(qǐng)求。

    Idea控制臺(tái)中文亂碼解決

    Idea控制臺(tái)中文亂碼解決:-Dfile.encoding=gb2312

    BaseServlet.java

    package cn.itcast.travel.web.servlet;import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;public class BaseServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//System.out.println("baseServlet的service方法被執(zhí)行了...");//完成方法分發(fā)//1.獲取請(qǐng)求路徑String uri = req.getRequestURI(); // /travel/user/addSystem.out.println("請(qǐng)求uri:" + uri);// /travel/user/add//2.獲取方法名稱(chēng)String methodName = uri.substring(uri.lastIndexOf('/') + 1);System.out.println("方法名稱(chēng):" + methodName);//3.獲取方法對(duì)象Method//誰(shuí)調(diào)用我?我代表誰(shuí)。System.out.println(this);//UserServlet的對(duì)象cn.itcast.travel.web.servlet.UserServlet@4903d97etry {//獲取方法Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);//4.執(zhí)行方法//暴力反射//method.setAccessible(true);method.invoke(this, req, resp);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}} }

    25-BaseServlet抽取_UserServlet&頁(yè)面路徑改寫(xiě)

    UserServlet.java

    將之前的Servlet實(shí)現(xiàn)的功能,抽取到UserServlet中的不同方法中實(shí)現(xiàn),并且將UserService創(chuàng)建抽取到成員變量位置。

    package cn.itcast.travel.web.servlet;import cn.itcast.travel.domain.ResultInfo; import cn.itcast.travel.domain.User; import cn.itcast.travel.service.UserService; import cn.itcast.travel.service.impl.UserServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.beanutils.BeanUtils;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Map;@WebServlet("/user/*") // /user/add /user/find public class UserServlet extends BaseServlet {//聲明UserService業(yè)務(wù)對(duì)象private UserService service = new UserServiceImpl();/*** 注冊(cè)功能** @param request* @param response* @throws ServletException* @throws IOException*/public void regist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//驗(yàn)證校驗(yàn)String check = request.getParameter("check");//從sesion中獲取驗(yàn)證碼HttpSession session = request.getSession();String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");session.removeAttribute("CHECKCODE_SERVER");//為了保證驗(yàn)證碼只能使用一次//比較if (checkcode_server == null || !checkcode_server.equalsIgnoreCase(check)) {//驗(yàn)證碼錯(cuò)誤ResultInfo info = new ResultInfo();//注冊(cè)失敗info.setFlag(false);info.setErrorMsg("驗(yàn)證碼錯(cuò)誤!");//將info對(duì)象序列化為jsonObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(info);response.setContentType("application/json;charset=utf-8");response.getWriter().write(json);return;}//1.獲取數(shù)據(jù)Map<String, String[]> map = request.getParameterMap();//2.封裝對(duì)象User user = new User();try {BeanUtils.populate(user, map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//3.調(diào)用service完成注冊(cè)//UserService service = new UserServiceImpl();boolean flag = service.regist(user);ResultInfo info = new ResultInfo();//4.響應(yīng)結(jié)果if (flag) {//注冊(cè)成功info.setFlag(true);} else {//注冊(cè)失敗info.setFlag(false);info.setErrorMsg("注冊(cè)失敗!");}//將info對(duì)象序列化為jsonObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(info);//將json數(shù)據(jù)寫(xiě)回客戶(hù)端//設(shè)置content-typeresponse.setContentType("application/json;charset=utf-8");response.getWriter().write(json);}/*** 登錄功能** @param request* @param response* @throws ServletException* @throws IOException*/public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.獲取用戶(hù)名和密碼數(shù)據(jù)Map<String, String[]> map = request.getParameterMap();//2.封裝User對(duì)象User user = new User();try {BeanUtils.populate(user, map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//3.調(diào)用Service查詢(xún)//UserService service = new UserServiceImpl();User u = service.login(user);ResultInfo info = new ResultInfo();//4.判斷用戶(hù)對(duì)象是否為nullif (u == null) {//用戶(hù)名密碼或錯(cuò)誤info.setFlag(false);info.setErrorMsg("用戶(hù)名密碼或錯(cuò)誤!");}//5.判斷用戶(hù)是否激活if (u != null && !"Y".equals(u.getStatus())) {//用戶(hù)尚未激活info.setFlag(false);info.setErrorMsg("您尚未激活,請(qǐng)激活!");}//6.判斷登錄成功if (u != null && "Y".equals(u.getStatus())) {request.getSession().setAttribute("user", u);//登錄成功標(biāo)記//登錄成功info.setFlag(true);}//響應(yīng)數(shù)據(jù)ObjectMapper mapper = new ObjectMapper();response.setContentType("application/json;charset=utf-8");mapper.writeValue(response.getOutputStream(), info);}/*** 查詢(xún)單個(gè)對(duì)象** @param request* @param response* @throws ServletException* @throws IOException*/public void findOne(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//從session中獲取登錄用戶(hù)Object user = request.getSession().getAttribute("user");//將user寫(xiě)回客戶(hù)端/* ObjectMapper mapper = new ObjectMapper();response.setContentType("application/json;charset=utf-8");mapper.writeValue(response.getOutputStream(),user);*/writeValue(user, response);}/*** 退出功能** @param request* @param response* @throws ServletException* @throws IOException*/public void exit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.銷(xiāo)毀sessionrequest.getSession().invalidate();//2.跳轉(zhuǎn)登錄頁(yè)面response.sendRedirect(request.getContextPath() + "/login.html");}/*** 激活功能** @param request* @param response* @throws ServletException* @throws IOException*/public void active(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.獲取激活碼String code = request.getParameter("code");if (code != null) {//2.調(diào)用service完成激活//UserService service = new UserServiceImpl();boolean flag = service.active(code);//3.判斷標(biāo)記String msg = null;if (flag) {//激活成功msg = "激活成功,請(qǐng)<a href='login.html'>登錄</a>";} else {//激活失敗msg = "激活失敗,請(qǐng)聯(lián)系管理員!";}response.setContentType("text/html;charset=utf-8");response.getWriter().write(msg);}} }

    頁(yè)面路徑改寫(xiě)

    login.html

    header.html

    register.html

    UserServiceImpl發(fā)送郵件

    查看請(qǐng)求

    總結(jié)

    以上是生活随笔為你收集整理的JavaWeb黑马旅游网-学习笔记04【BaseServlet抽取】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。