[学习记录]vue结合SSM实现简单的登录页面跳转

前面发表了vue新建页面https://blog.csdn.net/baozi141990/article/details/103009802
今天实现了一下与ssm结合实现登录的功能,SSM框架搭建前面也写过
https://blog.csdn.net/baozi141990/article/details/102954591
因为实现了前后端分离,所以后台ssm配置需要加一些东西

配置

ssm配置允许任何的跨域请求

1.spring-mvc.xml中要添加

<mvc:cors>
		<!--实现跨域的配置代码 -->
		<mvc:mapping path="/**"
			allowed-origins="*"
			allowed-methods="POST,GET, OPTIONS,DELETE,PUT"
			allowed-headers="Content-Type,ContentType,Access-Control-Allow-Headers, Authorization, X-Requested-With"
			allow-credentials="true" />
	</mvc:cors>
	<mvc:annotation-driven></mvc:annotation-driven>

注:此配置只有在spring版本为4.2以上才有效,否则会报错,不要担心,spring4.2一下只需要配置一个过滤器就好。过滤器代码如下:

package com.sybinal.shop.utils;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 头部过滤器
 * 
 * @author
 */
public class HeaderFilter implements Filter {

	public void destroy() {

	}

	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
			throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse httpResponse = (HttpServletResponse) res;
		httpResponse.setHeader("Access-Control-Allow-Origin", "*");
		httpResponse.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE");
		httpResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
		httpResponse.setHeader("", "");
		httpResponse.setHeader("", "");
		chain.doFilter(request, httpResponse);

	}

	public void init(FilterConfig arg0) throws ServletException {

	}
}

然后配置过滤器,在web.xml中添加下面代码

	<filter>
		<filter-name>header</filter-name>
		<filter-class>com.sybinal.shop.utils.HeaderFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>header</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

Vue脚手架配置跨域

首先在vue项目的confi-index.js。如下:
在这里插入图片描述
找到proxyTable
在这里插入图片描述
添加下面代码:

'/api': {
 	target: 'http://localhost:8081',
	changeOrigin: true, 
	pathRewrite: {
		'^/api': '/'
	}
}

第一个‘/api’会拦截所有访问路径带有‘/api’的访问路径,然后把’/api’替换成target中的内容。我这里是:‘http://localhost:8081’

然后在src目录下的main.js中添加

import axios from "axios"
Vue.prototype.$axios = axios

这样就可以全局使用axios了,也就是vue的ajax请求
注:在导入axios之前首先得下载axios,因为axios是第三方库的插件
使用npm命令下载

npm install axios

到这里基本配置就配置完了,
下面开始写正式的代码

功能代码

1.实体类,这个简单我就不写了
2.mybatis映射以及dao等

在User.xml中添加

	<select id="findUserByUP"  resultType="User" parameterType="User">
		select * from user where name = #{name} and password = #{password}
	</select>

dao

	@Override
	public User findUserByUP(User user) {
		// TODO Auto-generated method stub
		return (User) this.getSqlSession().selectOne("user.findUserByUP", user);
	}

service

	@Override
	public User findUserByUP(User user) {
		// TODO Auto-generated method stub
		return testDao.findUserByUP(user);
	}

contorller

	@RequestMapping("test/login")
	@ResponseBody
	public Map<String,Object>  login(@RequestBody User user) {
		Map<String, Object> map = new HashMap<String, Object>();
		User user2 = testService.findUserByUP(user);
		if(user2!=null) {
			map.put("user",user2);
		}else {
			map.put("msg","用户名或密码错误!");
		}
		return map;
	}

这里使用了springmvc默认的转json配置,在使用之前记得导入jackjson的jar包
在这里插入图片描述

vue项目代码

首先在src/components下面创建login.vue和user.vue

login.ue

<template>
	<div>
		<h1>{{msg}}</h1>
		<table style="margin: auto;">
			<tr>
				<td>
					用户名</td>
				<td><input type="text" v-model="username" name="username" id="username" /></td>
			</tr>
			<tr>
				<td>
					密码</td>
				<td><input type="password" v-model="password" name="pwd" id="pwd" /></td>
			</tr>
			<tr><button @click="login()">登录</button></tr>
		</table>
		<div v-if="username!=''">{{info}}</div>
		<Demo></Demo>
	</div>
</template>

<script>
	import test from '@/components/test'
	import Router from 'vue-router'
	export default {
		name: 'login',
		data() {
			return {
				username: 'myName',
				password: '123',
				msg: "登录",
				info: ''
			}
		},
		methods: {
			login() {
				var b = true;
				if (this.username == "") {
					b = false;
					alert('请输入用户名!')
				}
				if (this.password == "") {
					b = false;
					alert('请输入密码!')
				}
				if (b) {
					this.$axios.post('/api/Test/test/login.do', {
						name: this.username,
						password: this.password
					}).then(
						response => {
							this.info = response.data.user;
							console.log(this.info)
							if (typeof(this.info)!="undefined") {
								this.$router.push({
									path: '/user',
									query: {
										userInfo: this.info
									}
								})
							}else{
								this.info = response.data.msg;
							}
						}
					);

				}
			}
		},
		components: {
			'Demo': test
		}
	}
</script>

<style>
</style>

注意配置路由跳转的那里$ router容易写成$ route
user.vue

<template>
	<div v-if="this.userInfo!=''">您好,{{userInfo.name}}!</div>
	<div v-else>您未登陆!</div>
</template>

<script>
	export default {
		data() {
			return {
				userInfo: ""
			}
		},
		methods: {
			getParams() {
				const rou = this.$route.query.userInfo;
				this.userInfo = rou;
			}
		},
		created() {
			this.getParams();
		}
	}
</script>

<style>
</style>

注意:在这里使用的是$ route不是$ route.否则参数无法收到,而且info必须加this.info否则一直会报错 undefined
然后在stc/router/index.js中添加

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Login from '@/components/login'
import User from '@/components/user'

Vue.use(Router)

export default new Router({
	mode: 'history',
	routes: [{
		path: '/',
		name: 'HelloWorld',
		component: HelloWorld
	}, {
		path: '/login',
		name: 'login',
		component: Login
	}, {
		path: '/user',
		name: "user",
		component: User
	}]
})

这样整个项目的代码就写完了,下面是实现的页面
在这里插入图片描述
密码错误时
在这里插入图片描述
登录成功后
在这里插入图片描述
到这里就完了

  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 这个问题可能是一个编码问题,但是我理解为:如何基于Spring Boot实现Vue+SSM的分页。 实现Vue+SSM的分页,可以按照以下步骤进行: 1. 配置MyBatis和PageHelper,用于MySQL数据库的分页查询; 2. 在Controller中编写接口,用于处理Vue前端请求的数据,并调用Service中的方法实现分页查询; 3. 在Vue前端中,使用Element UI的组件实现分页效果,并绑定相关事件,用于向后端发送分页请求,获取数据并渲染页面; 4. 在Vue前端中,使用Axios库实现向后端发送请求; 5. 在Vue前端中,使用Vue Router实现页面的前端路由跳转。 以上是基于Spring Boot实现Vue+SSM的分页的一个简单实现思路,具体的实现细节需要根据具体的项目需求进行进一步的开发和调试。 ### 回答2: Spring Boot是一种基于Java的开发框架,它可以很方便地构建独立的、生产级别的应用程序。而Vue.js是一个用于构建Web界面的渐进式JavaScript框架,可用于构建单页应用程序(SPA)和移动应用程序。SSM框架由Spring、SpringMVC和MyBatis组成,可以用于开发Java Web应用程序。整合这些技术,可以实现一个分页的Web应用程序。 首先,在Spring Boot项目中,我们可以使用Spring Boot的starter来自动配置SpringMVC和MyBatis,使得开发过程更加简单。使用Vue.js可以实现前端页面的交互,通过Vue.js的组件化开发方式,可以将页面拆分为多个组件,提高代码的可读性和维护性。 在后端,我们可以使用SSM框架来实现数据的持久化、业务逻辑的处理和API的提供。使用MyBatis可以方便地进行数据库的访问,而Spring框架可以提供全面的依赖注入和AOP特性。SpringMVC可以帮助我们处理API请求,将数据传递给前端页面。 在分页方面,我们可以通过MyBatis提供的分页插件来实现分页功能。在API接口中,我们可以通过接收前端传递的页码和每页数据条数,使用MyBatis进行分页查询,将结果返回给Vue.js。在前端页面中,通过Vue.js进行分页组件的渲染和交互。 总之,Spring Boot项目基于Vue.js和SSM框架的分页实现可以提供一个良好的用户体验和高效的数据处理能力。此外,由于这些技术的流行性和稳定性,开发成本也比较低。 ### 回答3: SpringBoot项目基于VueSSM框架实现分页功能需要以下几个步骤: 1. 添加Vue.js和axios库到前端项目中,用于向后端请求数据和进行分页操作。 2. 在后端SSM项目中,设计一个接口用于处理分页请求,该接口应该包含当前页码、每页显示的记录数等参数,返回查询结果和总记录数。 3. 在后端Controller中实现该接口,并调用Service层中的查询方法获取分页数据,将结果封装成一个PageInfo对象,该对象包含当前页码、每页显示的记录数、总页数和查询结果。 4. 在前端Vue实例中,定义一个data对象用于存放分页相关数据,包括当前页码、每页显示的记录数、总页数和查询结果。 5. 在前端Vue实例中,定义一个方法用于向后端Controller发送分页请求,并将返回的分页结果保存到data对象中。 6. 在前端Vue模板中,使用v-for指令将分页结果渲染到页面上,并使用v-pagination组件实现分页导航。 7. 在前端Vue实例中,实现用户与分页导航的交互操作,例如点击页码、改变每页显示的记录数等操作。 通过以上步骤,就可以基于VueSSM框架实现一个高效的分页功能。使用Vue作为前端展示的框架,相比传统的JSP或Thymeleaf等技术,可以更加灵活和高效地处理页面渲染和交互操作;而SSM框架则提供了一个可靠的后端架构,可以保证数据的完整性和安全性。综合起来,基于VueSSM实现分页功能,不仅可以提高开发效率和用户体验,还可以提高系统的稳定性和可维护性。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值