前言
今天是课程设计的第二天,怎么说呢项目大体上的功能还是确定了,但是心里面还是有点慌,毕竟Thymeleaf的语法可以说是完全不熟悉,所以感觉有一大堆功能不熟悉,更有甚者可能很多功能实现不了。总而言之还有一堆问题等着我去解决。本来想着碰见难题就跳过,但是转念一想,这课设要是得过且过的话,十几天不就等于白瞎了吗?遇强则强,碰见问题就主动去克服他!
不扯多了 ,开整。
项目搭建
万事开头难,本来以为走过一次 应该这一次就会快很多。但是从数据库开始就奇奇怪怪的,新建了一个库一直连不上我吐了。然后又是找之前的项目删删改改把依赖倒进来了,之前因为保险起见以为导入依赖只要不用就行了,结果不是这样的 就好像springsecurity 你就算不去用 他还是会有一大堆拦截器,所以有把昨天的依赖删了,从新部署。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.kuang</groupId>
<artifactId>springboot-webapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-webapp</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 数据层 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--thymeleaf-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-thymeleaf</artifactId>-->
<!-- </dependency>-->
<!-- 用于编译jsp springboot tomcat jsp 支持开启-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--jstl的支持,c标签-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>compile</scope>
</dependency>
<!--webjars-->
<!--<dependency>-->
<!--<groupId>org.webjars</groupId>-->
<!--<artifactId>jquery</artifactId>-->
<!--<version>3.4.1</version>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-security</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
这只是今天的依赖 不晓得明天又要加一些什么功能。
登录注册的实现
别小看这个小小的登录注册。
首先是需要连接数据库。连接数据库分几步走
首先打开mysql的端口(感觉用了mysql我特么这个端口就没关过。。)
然后就是在idea连接数据库 具体的流程就是点左上角的小加号 然后在里面输入你的账号密码 记得下面一定要写连接的具体的哪个数据库 这样的话产生的URL就能直接复制到yaml配置里面了
然后就是配置一下yaml文件 主要是里面的 Mapper的扫描位置 还有数据库的连接驱动里面的信息
spring:
datasource:
username: sa
password: 123456
url: jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
mvc:
view:
suffix: .jsp
prefix: /WEB-INF/
mybatis:
mapper-locations:
classpath:com/hunanpyy/lplmgmt/mapper/*.xml
type-aliases-package: com.hunanpyy.lplmgmt.pojo
这两步骤做完后就是开始实体类的编写 这个简单就不多说了 然后就是Mapper的编写
package com.hunanpyy.lplmgmt.mapper;
import com.hunanpyy.lplmgmt.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
/**
* @author Michelle
*/
@Mapper
@Repository
public interface UserMapper {
User userSubmit(String id);
boolean userRegister(User user);
boolean userUpdatePassword(User user);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hunanpyy.lplmgmt.mapper.UserMapper">
<select id="userSubmit" resultType="com.hunanpyy.lplmgmt.pojo.User" parameterType="String">
select * from lpluser where id = #{id};
</select>
<insert id="userRegister" parameterType="User">
insert into lpluser (name,id,password)
values (#{name},#{id},#{password});
</insert>
<update id="userUpdatePassword" parameterType="User">
update lpluser
set name = #{name}, password=#{password}
where id = #{id} ;
</update>
</mapper>
没啥值得注意的 主要就是多写几次就ok了
controller层
package com.hunanpyy.lplmgmt.controller;
import com.hunanpyy.lplmgmt.mapper.UserMapper;
import com.hunanpyy.lplmgmt.pojo.User;
import com.hunanpyy.lplmgmt.service.UserService;
import org.apache.ibatis.jdbc.Null;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpSession;
@Controller
public class UserController {
@Autowired
UserMapper userService;
@GetMapping("test1")
String userTest(@RequestParam("id") String id,@RequestParam("password") String password){
return "test";
}
@GetMapping("/userSubmit")
String userSubmit(HttpSession httpSession, @RequestParam("id") String id, @RequestParam("password") String password){
System.out.println(id+password);
User user = userService.userSubmit(id);
if(user==null){
System.out.println("user=Null");
}
if(user!=null&&user.getPassword().equals(password)){
httpSession.setAttribute("user",user);
return "test";
}
else{
httpSession.setAttribute("msg","登录失败");
return "index";
}
}
@PostMapping("userRegister")
String userRegister(HttpSession httpSession,
@RequestParam ("name") String name,
@RequestParam("id") String id,
@RequestParam("password") String password) {
User theNewUser = new User(name, id, password);
boolean flag = userService.userRegister(theNewUser);
if (flag) {
return "test";
//注册成功
}
else {
return "index";
}
}
@PostMapping("userUpdate")
String userUpdate(@RequestParam("name") String name,
@RequestParam("id") String id,
@RequestParam("password") String password){
User user = new User(name, id, password);
boolean b = userService.userUpdatePassword(user);
if (b){
return "test";
}
else {
return "index";
}
}
@GetMapping("test")
String test(){
return "hello";
}
}
有一个小知识就是我们直接去地址框里面输入静态资源 是访问不到的 因为那里默认的是一个请求 因此我们需要调用请求才能访问到静态资源。
然后你直接去前端输入就能传到后台 实现注册登录还有信息修改。
其实还有个service层的编写 但是我感觉加一层容易出错 所以还是先放一放吧
前端
这里由于我不会vue和其他的那些花里胡哨的 所以我还是使用jsp把 但是springboot是不推荐jsp的 所以就不得不加一点支持了。
首先是要注释掉Thymeleaf的支持 因为这两个是不共存的,然后就是需要改一下配置文件 因为 springmvc的分发器是默认分发给后缀是HTML的 而且会分发给templet那个文件夹里面去
mvc:
view:
suffix: .jsp
prefix: /WEB-INF/
还有就是需要去吧这个web资源目录设置一下 配置到我们新建的这个web文件夹里面 然后他就被赋予了web 的能力
直到这里 我们就能直接的使用controller来访问jsp文件了 这样我就能把之前写的那些丑的一批的界面给拷贝到这里来了 。