javaweb 與jsp頁面的互動流程 (初次接觸寫)

來源:互聯網
上載者:User

標籤:params   類型   attribute   row   iter   forward   手機號   操作   login   

javaweb 與jsp頁面的互動流程javaweb項目目錄
1. javaweb項目的一般目錄: 


2. jsp 頁面一般情況下放在 top(前台頁面) back(後台頁面)
3. 後台代碼 放在src下面,分為:
1. dao層(與資料庫相關)
2. domain層(實體層)
3. service層 (服務層)
4. servlet層

前台 jsp使用表單或者使用js/jquery發送ajax請求
 1. jsp通過form表單向servlet發送請求 ``` <form action="${pageContext.request.contextPath }/LoginServlet" method="post" class="list">        <div class="login_title">密碼登入</div>          ${msg }        <input type="text" class="name" name="phone" placeholder="手機號">        <input type="password" name="password" class="password">        <input type="submit" class="submit"></form> ```注意到 action裡面的路徑是一個servlet的路徑2. jsp通過jquery 的 ajax往servlet發送請求  這個和html中使用ajax往php發送請求類似      例:        ```     var $value = this.value;     var $uid = $("#uid").val();     var _url = "${pageContext.request.contextPath }/CheckPassword";     var _param = {"id": $uid,"password":$value};     $.post(_url, _param,function(data){         if(data == 0){            $("#s1").html("<font color='red'>原密碼輸入錯誤,請重新輸入</font>");            $("#regBut").prop("disabled",true);         }else if(data == 1){             $("#s1").html("<font color='green'>原密碼輸入正確</font>");             $("#regBut").prop("disabled",false);         }     });    ```
後台java先通過 servlet接收請求
1. servlet 層首先接收請求 然後收集資料,利用收集到的資料執行個體化成實體物件  最後new一個service對象,調用service的某個方法將所執行個體化的對象傳到service層的某個方法    /**     * 修改密碼     */    public class ChangePasswordServlet extends HttpServlet {        private static final long serialVersionUID = 1L;                   /**         * @see HttpServlet#HttpServlet()         */        public ChangePasswordServlet() {            super();            // TODO Auto-generated constructor stub        }            /**         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)         */        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {            //收集資料            String newPassword = request.getParameter("newPassword");            String id = request.getParameter("id");            //封裝資料            User user = new User();            user.setId(id);            user.setPassword(newPassword);            //處理資料            UserService userService = new UserService();            try {                userService.ChangePassword(user);                //調整頁面                request.setAttribute("msg", "密碼修改成功");                request.getRequestDispatcher("/top/success.jsp").forward(request, response);            } catch (SQLException e) {                e.printStackTrace();            }                    }            /**         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)         */        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {            // TODO Auto-generated method stub            doGet(request, response);        }        }    2. service層的某個方法接收到對象後直接new一個dao層的對象,將得到的對象傳給層的某個方法public class UserService {    /**     * 註冊的方法     * @param user     * @throws SQLException      */    public void ChangePassword(User user) throws SQLException {        UserDao userDao = new UserDao();        userDao.ChangePassword(user);    }}3. dao層的某個方法得到對象後,進行資料庫操作,然後將結果封裝成一個或多個實體,返回給上一層(根據情況,如果需要返回的結果的話就將執行結果返回,如果不需要返回的話,可以不返回,預設是操作成功)    public class UserDao {        public void ChangePassword(User user) throws SQLException {            QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());//和資料庫建立連結            String sql = "update user set password = ? where id = ? ";            Object[] params = {user.getPassword(),user.getId()};            queryRunner.update(sql, params);        }    }4. 如果需要就結果的話,結果就一層一層返回,至於需不需要將結果執行個體化成視圖還需要根據具體情況,到servlet層的話建議返回json的資料格式,一般包含 code,msg及result三部分,  對於form提交的方式:servlet層一般使用request.setAttribute("msg","你好");類似的方法返回,當涉及到登入的時候,要使用request.getSession().setAttribute("user",user);然後再重新導向  對於ajax提交請求的方式:servlet層一般用    response.getWriter().write("0");返回資料,ajax中得到的回呼函數中得到的data就是返回的資料
jsp頁面接收到後台返回的結果
  1. 如果採用表單提交的方式的話,可以在jsp頁面寫上 類型 ${msg}的運算式,然後通過servlet的重新導向到某個jsp頁面,在jsp頁面可以通過 JSTL標籤及el運算式將返回結果渲染出來
  2. 如果是 ajax 方式提交的話,就可以在ajax的回呼函數中直接利用js/jquery修改html的dom節點或者跳轉頁面

javaweb 與jsp頁面的互動流程 (初次接觸寫)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.