国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【后端】黑馬MVC案例詳解

這篇具有很好參考價值的文章主要介紹了【后端】黑馬MVC案例詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

最近剛?cè)腴T后端,對不起,我背叛了游戲【哭】

跟著寫了一個這樣的案例

網(wǎng)頁界面是這樣的

【后端】黑馬MVC案例詳解

?沒寫刪除,里面帶有增加行和修改表單數(shù)據(jù)的功能

【后端】黑馬MVC案例詳解

【后端】黑馬MVC案例詳解?

?web方面就三個頁面,里面涉及到了Mybatis,Tomcat,JSP,Servlet,Maven,前端三劍客等知識,東西比較雜,我也是速通選手,掌握不太穩(wěn)固,所以寫個文章鞏固一下知識點,以便自己能夠更好地理解代碼以及運行邏輯。

項目結(jié)構(gòu)是這樣的,需要配置mybatis-config.xml文件,pom.xml需要引入tomcat、Servlet,mybatis,JSP,Maven寫個標(biāo)識就能自動下載了,Maven好方便

以及Mapper配置文件和web配置文件,不是很復(fù)雜。

我們的代碼方面

一、前端頁面

三個前端頁面分別是這樣的

brand:主頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" value="新增" id="add"><br>
<hr>
<table border="1" cellspacing="0" width="80%">
    <tr>
        <th>序號</th>
        <th>品牌名稱</th>
        <th>企業(yè)名稱</th>
        <th>排序</th>
        <th>品牌介紹</th>
        <th>狀態(tài)</th>
        <th>操作</th>

    </tr>


    <c:forEach items="${brands}" var="brand" varStatus="status">
//items:被遍歷的容器
//var:遍歷產(chǎn)生的臨時變量
//varStatus:遍歷狀態(tài)對象
//我們這里是從SelectAllServlet跳轉(zhuǎn)過來的,所以接收了request域,我們只管調(diào)brand對象輸出數(shù)據(jù)就行
        <tr align="center">
            <%--<td>${brand.id}</td>--%>
            <td>${status.count}</td>
            <td>${brand.brandName}</td>
            <td>${brand.companyName}</td>
            <td>${brand.ordered}</td>
            <td>${brand.description}</td>
            <c:if test="${brand.status == 1}">//這里是JSP,就是if判斷
                <td>啟用</td>
            </c:if>
            <c:if test="${brand.status != 1}">
                <td>禁用</td>
            </c:if>

            <td><a href="/brandDemo/selectByIdServlet?id=${brand.id}">修改</a> <a href="#">刪除</a></td>
        </tr>

    </c:forEach>

</table>

<script>
    document.getElementById("add").onclick = function (){
        location.href = "/brandDemo/addBrand.jsp";
    }//這里使用getElementById設(shè)置了按鈕的點擊事件。
</script>
</body>
</html>

?addBrand:新增數(shù)據(jù)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>添加品牌</title>
</head>
<body>
<h3>添加品牌</h3>
<form action="/brandDemo/addServlet" method="post">//這里我們提交到addServlet服務(wù),還是以POST形式,然后addServlet再轉(zhuǎn)發(fā)到brand.jsp頁面
    品牌名稱:<input name="brandName"><br>
    企業(yè)名稱:<input name="companyName"><br>
    排序:<input name="ordered"><br>
    描述信息:<textarea rows="5" cols="20" name="description"></textarea><br>
    狀態(tài):
    <input type="radio" name="status" value="0">禁用
    <input type="radio" name="status" value="1">啟用<br>

    <input type="submit" value="提交">
</form>
</body>
</html>

update:修改數(shù)據(jù)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>修改品牌</title>
</head>
<body>
<h3>修改品牌</h3>
<form action="/brandDemo/updateServlet" method="post">//這里還是一樣的,提交到updateServlet服務(wù)當(dāng)中
//這里跟新增表單頁面沒什么大的不同,但是Servlet方面就要先查詢再修改,還是比新增麻煩的

    <%--隱藏域,提交id--%>
    <input type="hidden" name="id" value="${brand.id}">

    品牌名稱:<input name="brandName" value="${brand.brandName}"><br>
    企業(yè)名稱:<input name="companyName" value="${brand.companyName}"><br>
    排序:<input name="ordered" value="${brand.ordered}"><br>
    描述信息:<textarea rows="5" cols="20" name="description">${brand.description} </textarea><br>
    狀態(tài):
    <c:if test="${brand.status == 0}">

        <input type="radio" name="status" value="0" checked>禁用
        <input type="radio" name="status" value="1">啟用<br>
    </c:if>

    <c:if test="${brand.status == 1}">

        <input type="radio" name="status" value="0" >禁用
        <input type="radio" name="status" value="1" checked>啟用<br>
    </c:if>


    <input type="submit" value="提交">
</form>
</body>
</html>

二、mybatis操作方面

既然處理數(shù)據(jù)肯定是要學(xué)習(xí)mybatis的

操作不難,寫幾個接口就行

這里則是使用到mapper的知識,不得不說,javaweb學(xué)的東西是真的雜,學(xué)的時候天天導(dǎo)包配文件,累。

BrandMapper:

package com.itheima.mapper;

import com.itheima.pojo.Brand;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface BrandMapper {//這里也沒啥好說的,以注解形式操縱數(shù)據(jù)庫,都是一些基礎(chǔ)操作語句
//唯一值得注意的是當(dāng)我們兩種模式命名有沖突的時候我們要配置ResultMap
//使得我們Brand查詢的時候能找到對應(yīng)的變量
    /*
    查詢所有
    @return
     */
    @Select("select * from tb_brand")
    @ResultMap("brandResultMap")
    List<Brand> selectAll();
    @Insert("insert into tb_brand values(null,#{brandName},#{companyName},#{ordered},#{description},#{status})")
    void add(Brand brand);
    /**
     * 根據(jù)id查詢
     * @param id
     * @return
     */
    @Select("select * from tb_brand where id = #{id}")
    @ResultMap("brandResultMap")
    Brand selectById(int id);
    /**
     * 修改
     * @param brand
     */
    @Update("update tb_brand set brand_name = #{brandName},company_name = #{companyName},ordered = #{ordered},description = #{description},status = #{status} where id = #{id}")
    void update(Brand brand);
}

brand數(shù)據(jù)類:

package com.itheima.pojo;
public class Brand {
    // id 主鍵
    private Integer id;
    // 品牌名稱
    private String brandName;
    // 企業(yè)名稱
    private String companyName;
    // 排序字段
    private Integer ordered;
    // 描述信息
    private String description;
    // 狀態(tài):0:禁用  1:啟用
    private Integer status;

//提供了三種構(gòu)造方法以備不同情況,是一些面向?qū)ο蟮奶匦?,Java學(xué)過的都能懂
    public Brand() {
    }

    public Brand(Integer id, String brandName, String companyName, String description) {
        this.id = id;
        this.brandName = brandName;
        this.companyName = companyName;
        this.description = description;
    }

    public Brand(Integer id, String brandName, String companyName, Integer ordered, String description, Integer status) {
        this.id = id;
        this.brandName = brandName;
        this.companyName = companyName;
        this.ordered = ordered;
        this.description = description;
        this.status = status;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBrandName() {
        return brandName;
    }

    public void setBrandName(String brandName) {
        this.brandName = brandName;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public Integer getOrdered() {
        return ordered;
    }

    public void setOrdered(Integer ordered) {
        this.ordered = ordered;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "Brand{" +
                "id=" + id +
                ", brandName='" + brandName + '\'' +
                ", companyName='" + companyName + '\'' +
                ", ordered=" + ordered +
                ", description='" + description + '\'' +
                ", status=" + status +
                '}';
    }
}

三、Servlet服務(wù)

這里就是處理數(shù)據(jù)的大頭了

因為創(chuàng)建工廠類只用一次就能最節(jié)省資源,所以我們用一個SqlSessionFactoryUtils靜態(tài)類來封裝好,下次直接調(diào)函數(shù)就行了,這里還是操作mybatis的東西

package com.itheima.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class SqlSessionFactoryUtils {
    private static SqlSessionFactory sqlSessionFactory;//靜態(tài)對象
    static {
        try{//這里是數(shù)據(jù)庫連接必寫的三句
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    public static  SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;//用的時候直接調(diào)這個方法
    }
}

隨后寫B(tài)randService,這里是將對數(shù)據(jù)的操作全都封裝好,免得到時候麻煩

代碼是這樣的

package com.itheima.service;

import com.itheima.mapper.BrandMapper;
import com.itheima.pojo.Brand;
import com.itheima.util.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.List;

public class BrandService {
    SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();//這里獲取工廠類
    /*
    查詢所有
    @return
     */
    public List<Brand> selectAll(){//查詢所有
        //調(diào)用BrandMapper.selectAll()
        //2.獲取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3.獲取BrandMapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
        //4.調(diào)用方法
        List<Brand> brands = mapper.selectAll();//這里就是操作數(shù)據(jù)庫,然后封裝到一個brands列表里
        sqlSession.close();
        return brands;//返回查詢到的值
    }
    /**
     * 添加
     * @param brand
     */
    public void add(Brand brand){//這里是添加

        //2. 獲取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3. 獲取BrandMapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);

        //4. 調(diào)用方法
        mapper.add(brand);//往數(shù)據(jù)庫里添加一個brand對象

        //提交事務(wù)
        sqlSession.commit();
        //釋放資源
        sqlSession.close();
    }
    /**
     * 根據(jù)id查詢
     * @return
     */
    public Brand selectById(int id){//依靠id查詢對象
        //調(diào)用BrandMapper.selectAll()
        //2. 獲取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3. 獲取BrandMapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
        //4. 調(diào)用方法
        Brand brand = mapper.selectById(id);
        sqlSession.close();
        return brand;
    }
    /**
     * 修改
     * @param brand
     */
    public void update(Brand brand){//修改值
        //2. 獲取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3. 獲取BrandMapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
        //4. 調(diào)用方法
        mapper.update(brand);
        //提交事務(wù)
        sqlSession.commit();
        //釋放資源
        sqlSession.close();
    }
}

然后是Servlet服務(wù)類

通過這些服務(wù)我們來操作網(wǎng)頁里的數(shù)據(jù)

SelectAllServlet:

package com.itheima.web;

import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/selectAllServlet")//這里我們通過標(biāo)簽訪問Servlet
public class SelectAllServlet extends HttpServlet {
    private BrandService service = new BrandService();//先創(chuàng)建一個Brand服務(wù)對象

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1、調(diào)用BrandService完成查詢
        List<Brand> brands = service.selectAll();//這里我們直接調(diào)用查詢
        //2、存入request域中
        req.setAttribute("brands",brands);//存入request域,到時候發(fā)出去的就是這個,要查詢的話只要調(diào)用鍵查值就行了,request域都是鍵值對。
        //3、轉(zhuǎn)發(fā)到brand.jsp
        req.getRequestDispatcher("/brand.jsp").forward(req,resp);//這里我們調(diào)用getrequestDispatcher方法轉(zhuǎn)發(fā)到brand.jsp頁面中,再通過JSP代碼把數(shù)據(jù)顯示出來。
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);//這樣寫能同時響應(yīng)POST請求和GET請求
    }
}

AddServlet:

package com.itheima.web;

import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {
    private BrandService service = new BrandService();


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //處理POST請求的亂碼問題
        request.setCharacterEncoding("utf-8");

        //1. 接收表單提交的數(shù)據(jù),封裝為一個Brand對象
        String brandName = request.getParameter("brandName");
        String companyName = request.getParameter("companyName");
        String ordered = request.getParameter("ordered");
        String description = request.getParameter("description");
        String status = request.getParameter("status");

        //封裝為一個Brand對象
        Brand brand = new Brand();
        brand.setBrandName(brandName);
        brand.setCompanyName(companyName);
        brand.setOrdered(Integer.parseInt(ordered));
        brand.setDescription(description);
        brand.setStatus(Integer.parseInt(status));

        //2. 調(diào)用service 完成添加
        service.add(brand);

        //3. 轉(zhuǎn)發(fā)到查詢所有Servlet
        request.getRequestDispatcher("/selectAllServlet").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

SelectById:

package com.itheima.web;

import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/selectByIdServlet")
public class SelectByIdServlet extends HttpServlet {
    private BrandService service = new BrandService();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1、接受id
        String id = req.getParameter("id");
        //2、調(diào)用service查詢
        Brand brand = service.selectById(Integer.parseInt(id));
        //3、存儲到request中
        req.setAttribute("brand",brand);
        //4、轉(zhuǎn)發(fā)到update.jsp
        req.getRequestDispatcher("/update.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

Updateservlet:

package com.itheima.web;

import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/updateServlet")
public class UpdateServlet extends HttpServlet {
    private BrandService service = new BrandService();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //處理POST請求的亂碼問題
        req.setCharacterEncoding("utf-8");
        //1、接受表單提交的數(shù)據(jù)
        String id = req.getParameter("id");
        String brandName = req.getParameter("brandName");
        String companyName = req.getParameter("companyName");
        String ordered = req.getParameter("ordered");
        String description = req.getParameter("description");
        String status = req.getParameter("status");

        //封裝為一個Brand對象
        Brand brand = new Brand();
        brand.setId(Integer.parseInt(id));
        brand.setBrandName(brandName);
        brand.setCompanyName(companyName);
        brand.setOrdered(Integer.parseInt(ordered));
        brand.setDescription(description);
        brand.setStatus(Integer.parseInt(status));

        //2、調(diào)用serice完成修改
        service.update(brand);

        //3、轉(zhuǎn)發(fā)到查詢所有Servlet
        req.getRequestDispatcher("/selectAllServlet").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

代碼差不多就這樣了,做完發(fā)現(xiàn)東西還挺多的,面向?qū)ο笠獙懙臇|西還是挺多的。

?

下面是邏輯的梳理,說實話梳理邏輯確實是要花上一些時間

展現(xiàn)brand頁面:通過查詢tb_brand和JSP以及HTML、CSS來展現(xiàn)出數(shù)據(jù)庫里的數(shù)據(jù)

訪問順序:SelectAll.class->brand.jsp

新增數(shù)據(jù):填寫表單數(shù)據(jù)->在數(shù)據(jù)庫中實現(xiàn)添加->addServlet->selectAllServlet->發(fā)送到brand.jsp->展現(xiàn)數(shù)據(jù)

訪問順序:brand.jsp->AddServlet.class->update.jsp->SelectAllServlet.class->brand.jsp

修改數(shù)據(jù):通過查詢當(dāng)前id所對應(yīng)的表將其發(fā)送到update.jsp0界面->填寫修改后的數(shù)據(jù)->提交表單數(shù)據(jù)->在數(shù)據(jù)庫中實現(xiàn)修改->查詢所有->brand.jsp展現(xiàn)數(shù)據(jù)

訪問順序:brand.jsp->SelectByIdServlet->update.jsp->updateServlet->SelectAllServlet->brand.jsp文章來源地址http://www.zghlxwxcb.cn/news/detail-461798.html

到了這里,關(guān)于【后端】黑馬MVC案例詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Spring MVC入門案例?。?!

    Spring MVC入門案例!??!

    idea如何建立web項目???-CSDN博客 index.jsp: success.jsp

    2024年01月16日
    瀏覽(16)
  • Spring MVC簡介附入門案例

    Spring MVC簡介附入門案例

    目錄 ? 一、SpringMVC簡介 1.1?MVC模型 1.2?SpringMVC 二、SpringMVC入門案例 2.1?創(chuàng)建項目 2.2?引入依賴和tomcat插件 2.3?修改web.xml文件? 2.4?新建springmvc.xml文件 2.5 編寫控制器? 2.6?配置運行方式 2.7?運行測試? 三、SpringMVC執(zhí)行流程 3.1?SpringMVC的組件 3.2?組件的工作流程 往期專欄文章

    2024年02月09日
    瀏覽(22)
  • 小白入門C#編寫MVC登錄小案例

    小白入門C#編寫MVC登錄小案例

    ??????對上述代碼的解釋: ??(1) 在C#MVC開發(fā)中的Controllers文件的IActionResult是什么意思呢? 什么時候要創(chuàng)建這個呢? ??①、在C#MVC開發(fā)中的Controllers文件中,IActionResult是一個接口,用于定義返回結(jié)果類型,它表示控制器方法的返回類型。 通過實現(xiàn)IActionResult接口,可以在

    2024年02月16日
    瀏覽(12)
  • Spring MVC處理響應(yīng)附案例詳解

    Spring MVC處理響應(yīng)附案例詳解

    目錄 一、配置視圖解析器 二、控制器方法的返回值 2.1 返回值為void 2.1.1 控制器方法 2.1.2 jsp頁面 2.1.3 測試結(jié)果 2.2 返回值為String 2.2.1 控制器方法 2.2.2?測試結(jié)果 2.3 返回值為ModelAndView 2.3.1 控制器方法 2.3.2 JSP頁面 2.3.3 測試結(jié)果? 三、某些會話對象設(shè)置數(shù)據(jù) 3.1 request域設(shè)置數(shù)據(jù)

    2024年02月11日
    瀏覽(20)
  • SpringMVC-2-Spring MVC攔截器詳解:從入門到精通

    SpringMVC-2-Spring MVC攔截器詳解:從入門到精通

    能夠編寫攔截器并配置攔截器 1.1 攔截器概念和作用 攔截器(Interceptor)是一種動態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動態(tài)攔截控制器方法的執(zhí)行 作用: 在指定的方法調(diào)用前后執(zhí)行預(yù)先設(shè)定的代碼 阻止原始方法的執(zhí)行 總結(jié):增強(qiáng) 核心原理:AOP思想 1.2 攔截器和過濾器的區(qū)別

    2024年02月12日
    瀏覽(33)
  • Vue入門三(表單控制|購物車案例|v-model進(jìn)階|與后端交互|計算屬性|監(jiān)聽屬性|Vue生命周期)

    Vue入門三(表單控制|購物車案例|v-model進(jìn)階|與后端交互|計算屬性|監(jiān)聽屬性|Vue生命周期)

    v-model雙向數(shù)據(jù)綁定,還可以對輸入框數(shù)據(jù)進(jìn)行一定的限定。 v-modle 釋義 lazy 等待input框的數(shù)據(jù)綁定時區(qū)焦點之后再變化 number 以數(shù)字開頭并只保留后面的數(shù)字,不保留字母;字母開頭都保留 trim 去除首位的空格 與后端交互統(tǒng)一使用json編碼格式 與后端交互涉及到跨域問題后,

    2024年01月21日
    瀏覽(27)
  • 【SpringMVC篇】詳解SpringMVC入門案例

    【SpringMVC篇】詳解SpringMVC入門案例

    ??專欄【SpringMVC】 ??喜歡的詩句:天行健,君子以自強(qiáng)不息。 ??音樂分享【如愿】 ??歡迎并且感謝大家指出小吉的問題?? Spring MVC是Spring框架中的一員,是目前最主流的Java EE Web框架之一。在企業(yè)級開發(fā)中,Spring MVC有非常廣泛的應(yīng)用。 Spring MVC基于MVC設(shè)計模式,將web層進(jìn)行職

    2024年02月08日
    瀏覽(15)
  • 【Elasticsearch】黑馬旅游案例

    【Elasticsearch】黑馬旅游案例

    目錄 4.黑馬旅游案例 4.1.酒店搜索和分頁 4.1.1.需求分析 4.1.2.定義實體類 4.1.3.定義controller 4.1.4.實現(xiàn)搜索業(yè)務(wù) 4.2.酒店結(jié)果過濾 4.2.1.需求分析 4.2.2.修改實體類 4.2.3.修改搜索業(yè)務(wù) 4.3.我周邊的酒店 4.3.1.需求分析 4.3.2.修改實體類 4.3.3.距離排序API 4.3.4.添加距離排序 4.3.5.排序距離顯

    2024年02月16日
    瀏覽(20)
  • ES實戰(zhàn) | 黑馬旅游案例

    ES實戰(zhàn) | 黑馬旅游案例

    需求:根據(jù)文字搜索,也可以選擇標(biāo)簽搜索 思路:用bool查詢,先根據(jù)查詢?nèi)?,再根?jù)標(biāo)簽過濾。 需求:實現(xiàn)分頁排序 思路:分頁跟排序是單獨的功能,可以根據(jù)選項排好序再分頁 要求:點擊獲取位置后,根據(jù)距離顯示酒店,且要顯示距離 思路:先判斷有沒有點擊

    2023年04月09日
    瀏覽(34)
  • Node.js黑馬時鐘案例

    Node.js黑馬時鐘案例

    先上沒有使用node.js之前的html部分代碼 效果如下圖所示: 我們的需求是什么? 使用nodejs創(chuàng)建文件 1.index.css 2.index.js 我們需要把style與script中的內(nèi)容分別寫入到這兩個文件當(dāng)中,然后替換掉html當(dāng)中的style與script標(biāo)簽,替換為外鏈的方式 詳細(xì)介紹實現(xiàn)過程,介紹在代碼注釋當(dāng)中

    2024年02月04日
    瀏覽(6)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包