大众点评APP

感悟
       认真撸了一遍,总算体会到了已经工作那些朋友说的,后端大部分就是写写接口的感觉了。
       前端还是写好的模板,自己稍微改了一点接口的变量名。


前端(React)APP连接

链接:https://pan.baidu.com/s/1KD7WENDn-52NPpMTTFQy7g
提取码:xsdv

后端(SSM)连接

https://github.com/xiguanlezz/Comment



一、前端启动(已安装nodejs)

1、CD到对应的前端目录

Alt

2、webpack.config.js里面配置数据接口地址

	devServer: {
        proxy: {
          '/api': {
          	//改为自己的数据接口地址
            target: 'https://localhost:8443/Comment',
            secure: false
          }
        },
        contentBase: "./public", 
        colors: true, 
        historyApiFallback: true, 
        inline: true, 
        hot: true  // 热加载
    }

3、开启代理,看到下图直接回车

	start /b npm run mock

Alt

4、运行

	npm start

已对接后台。
Alt




二、踩坑汇总

1、数据库相关

       新建实体类的时候想试一下驼峰命名法,结果在mybatis配置文件中没有开启。。。裂开。<setting name="mapUnderscoreToCamelCase" value="true"/>。在MyBatis的配置文件中开启驼峰命名法,这个只和默认的映射规则有关,和自定义封装规则没有半毛钱关系。具体MyBatis的底层原理不清楚,有空要去补补,不过列名映射实体类成员变量名底层好像用了SQL的as。

       MyBatis模糊查询参数和两个百分号之间要有空格,否则是查不出来的。

       不用修改任何配置,默认情况下MyBatis只要将SimpleDateFormat后的字符串传到POJO或者作为参数传入,就可以存入数据库时(datetime)就精确到秒


       SQL的update语句不能更新子查询出来的数据。
       SQL查询语句中不能使用列的别名作为WHERE的条件。
       SQL更新语句不写WHERE的话默认是全表更新。
       MySQL的set语句是有顺序的,每次都是按照上半句结果来的。SQLServer是没有顺序的。然而MyBatis底层有点像SQLServer。。。

2、Servlet部分

       后台写接口返回对象的时候报错。springmvc无法将对象直接转换为json对象,需要导入jar包以及配置Message对象转换器。
Alt


       jsp默认会忽略el表达式,EL表达式取不出SpringMVC中隐含模型中的值,jsp头上加上isELIgnored="false"


       SMM整合后,测试类的编写:

	@RunWith(SpringJUnit4ClassRunner.class)
	@ContextConfiguration("classpath:/spring/spring-config.xml")
	public class TestSSM {
	
	    @Autowired
	    private AdvertisementService advertisementService;
	
	    @Test
	    public void test01() {
	        Advertisement advertisement = advertisementService.QueryById(1);
	        System.out.println(advertisement);
	    }
	}

       百度出来SpringMVC和Spring是两个容器,Sping是父容器,SpringMVC是子容器。因此在Spring容器中加载的properties文件,在控制器里面用value注解会取不到值,需要在SpringMVC配置文件中重新声明配置文件


       Fuck,给表单埋隐藏域,Debug转换方法过滤器的源码才发现,_method只能设置DELETE、PUT、PATCH(局部更新),想变成get方法,直接改form的属性就好了,不用绕一圈。
Alt


       Rest风格遇上文件上传,必须再配置一个过滤器。而且在tomcat7以上的版本,还需要在jsp页面上加上isErrorPage="true"

	<!--  必须在hiddenHttpMethodFilter之前提前解析出带文件的上传域-->
	  <filter>
	    <filter-name>MultipartFilter</filter-name>
	    <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
	    <init-param>
	      <param-name>multipartResolverBeanName</param-name>
	      <param-value>multipartResolver</param-value>
	    </init-param>
	  </filter>
	  <filter-mapping>
	    <filter-name>MultipartFilter</filter-name>
	    <url-pattern>/*</url-pattern>
	  </filter-mapping>
	
	  <filter>
	    <filter-name>hiddenHttpMethodFilter</filter-name>
	    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
	  </filter>
	  <filter-mapping>
	    <filter-name>hiddenHttpMethodFilter</filter-name>
	    <url-pattern>/*</url-pattern>
	  </filter-mapping>

       简单的ajax登录校验直接用原生的写好了,记得指定dataType为text,且用了ResponseBody注解在get请求的时候,返回给前端的中文会出现乱码。如果是复杂的用注解,指定dataType为json,并且在SpringMVC的配置文件中加上以下配置:

	<mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

       JSTL语法不支持超过两层的级联属性,就是不可以用两次 . 来取值。而且forEach标签的items属性取得时候要加上"${}"。


       SpringMVC的@RequestMapping注解不写的话,默认GET、POST都支持,并且会根据前端方式自动适应。


       写拦截器的时候,没放行ajax。。。难怪APP出不来数据,ajax请求也被拦截了。。。配置文件放行ajax即可。



3、其他

       jquery菜单列表拼接的时候,需要给参数带上引号,如果参数时数字可以省略。

       网上资源有防盗链机制,请求该网上图片的时候必须请求头里带上诸如本站标志的东西才能成功响应,否则就是403错误。之前找bug的时候,本来还以为是访问某网站用的是http的请求,但却访问了https的资源,硬是将localhost请求改成了https,虽然浏览器上没有可用的证书。变为https的方法就是tomcat中server.xml中添加,tomcat.keystore是jdk自己生成的,具体可以百度。

		<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               keystoreFile="E:\apache-tomcat_key\tomcat.keystore" keystorePass="123456"
               clientAuth="false" sslProtocol="TLS" />

       这顿骚操作当然是失败了,问题的根源是防盗链啊!head标签加上<meta name="referrer" content="no-referrer" />解决了。。。




三、设计

1、数据库表设计

Alt

2、功能明细(CRUD不说了)

       具体后台订单统计界面用echarts以折线图的形式可视化上一天的数据。其实可以新建一张表去维护这写数据,每天定时刷新,懒得了。
       SpringTask定时更新商户的评分以及已售数量,数据库要好好补补,一条语句一想就是一下午。。。
       自定义了一个分页拦截器,只要dao层函数以ByPage结尾都可以分页。而且将分页标签封装了。
       管理员密码通过MD5加密存入数据库。





接下来打算先学WebRTC,然后学SpringBoot。SpringBoot+WebRTC搭个可以视频互动的网页。

### 大众点评 App 数据集及相关开源项目 关于大众点评的数据集,目前并没有官方公开的大规模数据集可供下载。然而,在研究领域中存在一些由研究人员整理的小型数据集或者类似的餐饮评价类数据集可以作为替代方案[^1]。 #### 可能的相关资源 以下是几个可能与大众点评功能相似的开源项目或数据集: 1. **Yelp Open Dataset** Yelp 提供了一个开放数据集,其中包含了大量餐厅评论、评分以及用户信息等内容。虽然这不是来自大众点评的具体数据,但它具有很高的代性,适合用于模拟类似应用的功能开发和数据分析工作。该数据集可以通过以下链接获取:[https://www.yelp.com/dataset](https://www.yelp.com/dataset)[^3]。 2. **Airbnb Lottie 动画库 (间接关联)** 虽然 Airbnb 的 Lottie 库主要用于实现动画效果,并不直接涉及大众点评的核心业务逻辑,但在其 GitHub 页面上有许多开发者分享了如何将其集成到移动应用程序中的案例[^2]。如果计划构建类似于大众点评的应用程序界面,则此工具可能会有所帮助。 3. **GitHub 上的仿制版本** 在 GitHub 平台上搜索关键词如 “Dianping Clone”,能够找到多个尝试模仿大众点评 APP 行为模式的开源项目。这些项目通常会附带简单的数据库设计文档以及前后端代码结构说明文件等资料。例如下面这个仓库就提供了一套基于 Spring Boot 和 Redis 实现的服务端解决方案: ```xml <!-- Maven POM 文件片段 --> <dependencies> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.13.6</version> </dependency> </dependencies> ``` 4. **其他第三方爬虫采集方式** 如果上述方法均无法满足需求,还可以考虑通过合法途径利用网络爬虫技术抓取部分公开可用的信息来创建自定义小型数据集合。不过需要注意的是,在实际操作过程中务必遵循目标网站的服务条款以免触犯法律风险。 ```python import requests from bs4 import BeautifulSoup def fetch_reviews(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') reviews = [] for review in soup.find_all('div', class_='review'): text = review.find('p').get_text() rating = int(review['data-rating']) reviews.append({ 'text': text, 'rating': rating }) return reviews ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值