springmvc + vue 简单系统搭建

「爱情、让人受尽委屈。」 2022-06-01 14:21 532阅读 0赞

1、使用的软件分别是idea和webstorm,用springmvc做前后端分离其实挺不好的,但是毕竟尝试一下挺不错的,写的不好的地方请指正

2、后端基本的框架结构(不完全按照springmvc走的,其中加了点自己的想法)

SouthEast

3、这是vue的基本架子

SouthEast 1

4、从后端到前端遇到的问题给大家罗列一下,希望不要重蹈覆辙。

4.1、配置mybatis-config.xml

配置顺序依次为:

properties/settings/typeAliases/typeHandlers/objectFactory/objectWrapperFactory/plugins/environments/databaseIdProvider/mappers

  1. <typeAliases>
  2. <typeAlias alias="User" type="com.pojo.User"/>
  3. </typeAliases>
  4. <environments default="development">
  5. <environment id="development">
  6. <transactionManager type="JDBC"></transactionManager>
  7. <dataSource type="POOLED">
  8. <property name="driver" value="${jdbc.driver}"/>
  9. <property name="url" value="${jdbc.url}"/>
  10. <property name="username" value="root"/>
  11. <property name="password" value="123456"/>
  12. </dataSource>
  13. </environment>
  14. </environments>
  15. <mappers>
  16. <mapper resource="mapper/UserMapper.xml"/>
  17. </mappers>

最重要的无非就是上面的这几个,配置好了就没什么了,到此为止mybatis就好了。

4.2、dispatcher-servlet.xml配置

  1. <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->
  2. <mvc:annotation-driven />
  3. <!-- 默认扫描的包路径 -->
  4. <!-- 启动包扫描功能,以便注册带有@Controller、@service、@repository、@Component等注解的类成为spring的bean -->
  5. <context:component-scan base-package="com"/>
  6. <!-- 配置拦截器 -->
  7. <mvc:interceptors>
  8. <mvc:interceptor>
  9. <mvc:mapping path="/**"/> <!-- 表示拦截所有的url包括子url路径 -->
  10. <bean class="com.controller.interceptor.CommonInterceptor"/>
  11. </mvc:interceptor>
  12. </mvc:interceptors>

到此为止,dispatcher-servlet就这几点比较重要吧,其他的没什么了。拦截器看自己需要不需要,我的拦截器主要是用在了异步访问上,加了请求头,如下

  1. public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler)throws Exception{
  2. response.setHeader("Access-Control-Allow-Origin", "*");
  3. response.setHeader("Access-Control-Allow-Methods", "*");
  4. response.setHeader("Access-Control-Max-Age", "3600");
  5. response.setHeader("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept");
  6. return true;
  7. }

4.3、关键的就是web.xml了。话不多说上代码

  1. <display-name>Archetype Created Web Application</display-name>
  2. <!--springmvc配置-->
  3. <servlet>
  4. <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml-->
  5. <servlet-name>dispatcher</servlet-name>
  6. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  7. <load-on-startup>1</load-on-startup>
  8. </servlet>
  9. <!-- 设置dispatchservlet的匹配模式,通过把dispatchservlet映射到/,默认servlet会处理所有的请求,包括静态资源 -->
  10. <servlet-mapping>
  11. <servlet-name>dispatcher</servlet-name>
  12. <url-pattern>/</url-pattern>
  13. </servlet-mapping>
  14. <!--<!– 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 –>-->
  15. <context-param>
  16. <param-name>contextConfigLocation</param-name>
  17. <param-value>classpath:mybatis.xml</param-value>
  18. </context-param>
  19. <!-- Spring配置 -->
  20. <listener>
  21. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  22. </listener>
  23. <!-- 字符集过滤器 -->
  24. <filter>
  25. <filter-name>encodingFilter</filter-name>
  26. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  27. <init-param>
  28. <param-name>encoding</param-name>
  29. <param-value>UTF-8</param-value>
  30. </init-param>
  31. <init-param>
  32. <param-name>forceEncoding</param-name>
  33. <param-value>true</param-value>
  34. </init-param>
  35. </filter>
  36. <filter-mapping>
  37. <filter-name>encodingFilter</filter-name>
  38. <url-pattern>/*</url-pattern>
  39. </filter-mapping>

每段代码加了注释,我就不啰嗦了。配置文件全部写好后,其他的就是自己发挥了。

一个登录controller的代码

  1. @CrossOrigin(origins = "*",maxAge = 3600)
  2. @RequestMapping(value = "/login",method = RequestMethod.POST)
  3. public @ResponseBody UserOut login(@RequestParam(value = "name",required = false) String name, @RequestParam(value = "password",required = false) String password){
  4. String msg = "";
  5. String pwd = password;
  6. if(userService.login(name)!= null && pwd.equals(userService.login(name))){
  7. msg = "welcome" + name;
  8. userOut.setId("0");
  9. }
  10. if(userService.login(name)==null){
  11. msg = "user is not exist";
  12. userOut.setId("1");
  13. }
  14. if(userService.login(name) != null && !pwd.equals(userService.login(name))){
  15. msg = "password is wrong";
  16. userOut.setId("2");
  17. }
  18. userOut.setMsg(msg);
  19. return userOut;
  20. }

5、vue简介

5.1、vue中用了一个element,是第三方的UI,应该是饿了吗做的,挺不错的,大家可以试试,使用方法也很简单

  1. 安装
  2. npm i element-ui -S
  3. 使用
  4. import ElementUI from 'element-ui'
  5. import 'element-ui/lib/theme-chalk/index.css'
  6. import Vue from 'vue'
  7. import App from './App'
  8. import router from './router'
  9. import ElementUI from 'element-ui'
  10. import 'element-ui/lib/theme-chalk/index.css'
  11. Vue.use(ElementUI)
  12. Vue.use(router)
  13. Vue.config.productionTip = false,
  14. /* eslint-disable no-new */
  15. new Vue({
  16. el: '#app',
  17. template: '<App/>',
  18. router,
  19. components: { App }
  20. })

第一张图片是官方安装element的教程

第二张图片是我自己的使用方式

5.2、路由的使用,vue所有皆为组件,在我看来组件就是对象的引申吧。说白了还是对象,没什么区别

不过vue使用起来比angular确实好点

  1. <router-view></router-view>

这个在手就可以了,Vue可以通过路由的方式实现页面的专挑,你可以 router-view 当做是一个容器,它渲染的组件是你使用 vue-router 指定的。5.3、路由的定义

  1. {
  2. path:'/login',
  3. name:'login',
  4. component:Login
  5. },

对,就是这么简单,记住一点,vue的默认路由是index,要是想自己写路由,可以单独写,在index里面import一下,或者写为index里面某个路由的子路由,也就是children。

  1. {
  2. path: '/teacherMain',
  3. component: TeacherMain,
  4. children: [
  5. ...teacherRouter.router,
  6. ...SyTeacherRouter.router,
  7. ...LmsTeacherRouter.router
  8. ]
  9. },

这样就可以了。记住一点,子路由里面配置的时候path可以加“/”,也可以不加。如果没加”/“,访问地址的时候在端口号后面加个“#”,至于为什么自己别懒,去查查。可能是浏览器机制的问题或者跨域请求的问题吧。5.4、同上,给一个请求后端数据的例子

  1. getUserList(){
  2. this.$http.get('http://localhost:8089/getUser',{emulateJSON: true}).then(response =>{
  3. var list = response.data
  4. this.userList = list
  5. },response =>{
  6. console.log("error");
  7. })
  8. },

这就实现了springmvc和vue的串联了。有不清楚的地方可留言。不对的地方请指正,除了理论上可能会有点出入,实践上我觉得错误应该没有吧,有的话系统就不能实现了。

vue最后可以运行vue run build 生成index.html,把生成的文件放到服务器就好了

最后给大家看一下简单的页面。

SouthEast 2

SouthEast 3

源码地址 :https://github.com/mannix-lei/comspringmvc

git一直再更新,加了几个vue的项目,可以一起练手,欢迎指正

发表评论

表情:
评论列表 (有 0 条评论,532人围观)

还没有评论,来说两句吧...

相关阅读