Complete index page
This commit is contained in:
commit
ed1df06cf6
33
.gitignore
vendored
Normal file
33
.gitignore
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
HELP.md
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
118
.mvn/wrapper/MavenWrapperDownloader.java
vendored
Normal file
118
.mvn/wrapper/MavenWrapperDownloader.java
vendored
Normal file
@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Copyright 2007-present the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import java.net.*;
|
||||
import java.io.*;
|
||||
import java.nio.channels.*;
|
||||
import java.util.Properties;
|
||||
|
||||
public class MavenWrapperDownloader {
|
||||
|
||||
private static final String WRAPPER_VERSION = "0.5.6";
|
||||
/**
|
||||
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
|
||||
*/
|
||||
private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
|
||||
+ WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
|
||||
|
||||
/**
|
||||
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
|
||||
* use instead of the default one.
|
||||
*/
|
||||
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
|
||||
".mvn/wrapper/maven-wrapper.properties";
|
||||
|
||||
/**
|
||||
* Path where the maven-wrapper.jar will be saved to.
|
||||
*/
|
||||
private static final String MAVEN_WRAPPER_JAR_PATH =
|
||||
".mvn/wrapper/maven-wrapper.jar";
|
||||
|
||||
/**
|
||||
* Name of the property which should be used to override the default download url for the wrapper.
|
||||
*/
|
||||
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
|
||||
|
||||
public static void main(String args[]) {
|
||||
System.out.println("- Downloader started");
|
||||
File baseDirectory = new File(args[0]);
|
||||
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
|
||||
|
||||
// If the maven-wrapper.properties exists, read it and check if it contains a custom
|
||||
// wrapperUrl parameter.
|
||||
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
|
||||
String url = DEFAULT_DOWNLOAD_URL;
|
||||
if (mavenWrapperPropertyFile.exists()) {
|
||||
FileInputStream mavenWrapperPropertyFileInputStream = null;
|
||||
try {
|
||||
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
|
||||
Properties mavenWrapperProperties = new Properties();
|
||||
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
|
||||
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
|
||||
} catch (IOException e) {
|
||||
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
|
||||
} finally {
|
||||
try {
|
||||
if (mavenWrapperPropertyFileInputStream != null) {
|
||||
mavenWrapperPropertyFileInputStream.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
// Ignore ...
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println("- Downloading from: " + url);
|
||||
|
||||
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
|
||||
if (!outputFile.getParentFile().exists()) {
|
||||
if (!outputFile.getParentFile().mkdirs()) {
|
||||
System.out.println(
|
||||
"- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
|
||||
}
|
||||
}
|
||||
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
|
||||
try {
|
||||
downloadFileFromURL(url, outputFile);
|
||||
System.out.println("Done");
|
||||
System.exit(0);
|
||||
} catch (Throwable e) {
|
||||
System.out.println("- Error downloading");
|
||||
e.printStackTrace();
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
|
||||
if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
|
||||
String username = System.getenv("MVNW_USERNAME");
|
||||
char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
|
||||
Authenticator.setDefault(new Authenticator() {
|
||||
@Override
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return new PasswordAuthentication(username, password);
|
||||
}
|
||||
});
|
||||
}
|
||||
URL website = new URL(urlString);
|
||||
ReadableByteChannel rbc;
|
||||
rbc = Channels.newChannel(website.openStream());
|
||||
FileOutputStream fos = new FileOutputStream(destination);
|
||||
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
|
||||
fos.close();
|
||||
rbc.close();
|
||||
}
|
||||
|
||||
}
|
BIN
.mvn/wrapper/maven-wrapper.jar
vendored
Normal file
BIN
.mvn/wrapper/maven-wrapper.jar
vendored
Normal file
Binary file not shown.
2
.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
2
.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
|
||||
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
|
101
README.md
Normal file
101
README.md
Normal file
@ -0,0 +1,101 @@
|
||||
# Greate Community
|
||||
|
||||
---
|
||||
|
||||
## 🥝 从本项目你能学到什么
|
||||
|
||||
- 👍 学会主流的 Java Web 开发技术和框架
|
||||
- 👍 积累一个真实的 Web 项目开发经验
|
||||
- 👍 掌握本项目中涉及的常见面试题的答题策略
|
||||
|
||||
## 🍉 技术栈
|
||||
|
||||
- Spring
|
||||
- Spring Boot 2.x
|
||||
- Spring MVC
|
||||
- ORM:MyBatis
|
||||
- 数据库:MySQL 5.7
|
||||
- 缓存:Redis
|
||||
- 消息队列:Kafka
|
||||
- 搜索引擎:Elasticsearch
|
||||
- 安全:Spring Security
|
||||
- 监控:Spring Actuator
|
||||
- 前端:Thymeleaf + Bootstrap
|
||||
- 日志:SLF4J(日志接口) + Logback(日志实现)
|
||||
|
||||
## 🍋 开发环境
|
||||
|
||||
- 构建工具:Apache Maven
|
||||
- 集成开发工具:Intellij IDEA
|
||||
- 数据库:MySQL、Redis
|
||||
- 应用服务器:Apache Tomcat
|
||||
- 版本控制工具:Git
|
||||
|
||||
## 🍏 功能列表
|
||||
|
||||
## 🍑 界面展示
|
||||
|
||||
## 🍓 数据库文件
|
||||
|
||||
用户 `user`:
|
||||
|
||||
```sql
|
||||
DROP TABLE IF EXISTS `user`;
|
||||
SET character_set_client = utf8mb4 ;
|
||||
CREATE TABLE `user` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(50) DEFAULT NULL,
|
||||
`password` varchar(50) DEFAULT NULL,
|
||||
`salt` varchar(50) DEFAULT NULL,
|
||||
`email` varchar(100) DEFAULT NULL,
|
||||
`type` int(11) DEFAULT NULL COMMENT '0-普通用户; 1-超级管理员; 2-版主;',
|
||||
`status` int(11) DEFAULT NULL COMMENT '0-未激活; 1-已激活;',
|
||||
`activation_code` varchar(100) DEFAULT NULL,
|
||||
`header_url` varchar(200) DEFAULT NULL,
|
||||
`create_time` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `index_username` (`username`(20)),
|
||||
KEY `index_email` (`email`(20))
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8;
|
||||
```
|
||||
|
||||
讨论帖 `discuss_post`:
|
||||
|
||||
```sql
|
||||
DROP TABLE IF EXISTS `discuss_post`;
|
||||
SET character_set_client = utf8mb4 ;
|
||||
CREATE TABLE `discuss_post` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) DEFAULT NULL,
|
||||
`title` varchar(100) DEFAULT NULL,
|
||||
`content` text,
|
||||
`type` int(11) DEFAULT NULL COMMENT '0-普通; 1-置顶;',
|
||||
`status` int(11) DEFAULT NULL COMMENT '0-正常; 1-精华; 2-拉黑;',
|
||||
`create_time` timestamp NULL DEFAULT NULL,
|
||||
`comment_count` int(11) DEFAULT NULL,
|
||||
`score` double DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `index_user_id` (`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
```
|
||||
|
||||
评论(回复)`comment`:
|
||||
|
||||
```sql
|
||||
DROP TABLE IF EXISTS `comment`;
|
||||
SET character_set_client = utf8mb4 ;
|
||||
CREATE TABLE `comment` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) DEFAULT NULL,
|
||||
`entity_type` int(11) DEFAULT NULL,
|
||||
`entity_id` int(11) DEFAULT NULL,
|
||||
`target_id` int(11) DEFAULT NULL,
|
||||
`content` text,
|
||||
`status` int(11) DEFAULT NULL,
|
||||
`create_time` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `index_user_id` (`user_id`),
|
||||
KEY `index_entity_id` (`entity_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
```
|
||||
|
411
docs/10-开发社区首页.md
Normal file
411
docs/10-开发社区首页.md
Normal file
@ -0,0 +1,411 @@
|
||||
# 开发社区首页
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
## DiscussPost 讨论帖
|
||||
|
||||
### Entity
|
||||
|
||||
### DAO
|
||||
|
||||
- Mapper 接口 `DiscussPostMapper`
|
||||
- 对应的 xml 配置文件 `discusspost-mapper.xml`
|
||||
|
||||
`@Param` 注解用于给参数起别名,**如果只有一个参数**,并且需要在 `<if>` 里使用,则必须加别名
|
||||
|
||||
```java
|
||||
@Mapper
|
||||
public interface DiscussPostMapper {
|
||||
|
||||
/**
|
||||
* 分页查询讨论贴信息
|
||||
*
|
||||
* @param userId 当传入的 userId = 0 时查找所有用户的帖子
|
||||
* 当传入的 userId != 0 时,查找该指定用户的帖子
|
||||
* @param offset 每页的起始索引
|
||||
* @param limit 每页显示多少条数据
|
||||
* @return
|
||||
*/
|
||||
List<DiscussPost> selectDiscussPosts(int userId, int offset, int limit);
|
||||
|
||||
/**
|
||||
* 查询讨论贴的个数
|
||||
* @param userId 当传入的 userId = 0 时计算所有用户的帖子总数
|
||||
* 当传入的 userId != 0 时计算该指定用户的帖子总数
|
||||
* @return
|
||||
*/
|
||||
int selectDiscussPostRows(@Param("userId") int userId);
|
||||
}
|
||||
```
|
||||
|
||||
对应的 Mapper:
|
||||
|
||||
```xml
|
||||
<?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.greate.community.dao.DiscussPostMapper">
|
||||
|
||||
<sql id = "selectFields">
|
||||
id, user_id, title, content, type, status, create_time, comment_count, score
|
||||
</sql>
|
||||
|
||||
<!--分页查询讨论贴信息-->
|
||||
<!--不显示拉黑的帖子, 按照是否置顶和创建时间排序-->
|
||||
<select id = "selectDiscussPosts" resultType="DiscussPost">
|
||||
select <include refid="selectFields"></include>
|
||||
from discuss_post
|
||||
where status != 2
|
||||
<if test = "userId!=0">
|
||||
and user_id = #{userId}
|
||||
</if>
|
||||
order by type desc, create_time desc
|
||||
limit #{offset}, #{limit}
|
||||
</select>
|
||||
|
||||
<!--查询讨论贴的个数-->
|
||||
<select id = "selectDiscussPostRows" resultType="int">
|
||||
select count(id)
|
||||
from discuss_post
|
||||
where status != 2
|
||||
<if test = "userId != 0">
|
||||
and user_id = #{userId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
```
|
||||
|
||||
### Service
|
||||
|
||||
关于自动注入 Mapper 报错问题:可参考 [关于IDEA中@Autowired 注解报错~图文](https://www.cnblogs.com/taopanfeng/p/10994075.html)
|
||||
|
||||
```java
|
||||
@Service
|
||||
public class DiscussPostSerivce {
|
||||
|
||||
@Autowired
|
||||
private DiscussPostMapper discussPostMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询讨论帖信息
|
||||
*
|
||||
* @param userId 当传入的 userId = 0 时查找所有用户的帖子
|
||||
* 当传入的 userId != 0 时,查找该指定用户的帖子
|
||||
* @param offset 每页的起始索引
|
||||
* @param limit 每页显示多少条数据
|
||||
* @return
|
||||
*/
|
||||
public List<DiscussPost> findDiscussPosts (int userId, int offset, int limit) {
|
||||
return discussPostMapper.selectDiscussPosts(userId, offset, limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询讨论贴的个数
|
||||
* @param userId 当传入的 userId = 0 时计算所有用户的帖子总数
|
||||
* 当传入的 userId != 0 时计算该指定用户的帖子总数
|
||||
* @return
|
||||
*/
|
||||
public int findDiscussPostRows (int userId) {
|
||||
return discussPostMapper.selectDiscussPostRows(userId);
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
## User
|
||||
|
||||
### Entity
|
||||
|
||||
### DAO
|
||||
|
||||
```java
|
||||
@Mapper
|
||||
public interface UserMapper {
|
||||
|
||||
/**
|
||||
* 根据 id 查询用户
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
User selectById (int id);
|
||||
|
||||
/**
|
||||
* 根据 username 查询用户
|
||||
* @param username
|
||||
* @return
|
||||
*/
|
||||
User selectByName(String username);
|
||||
|
||||
/**
|
||||
* 根据 email 查询用户
|
||||
* @param email
|
||||
* @return
|
||||
*/
|
||||
User selectByEmail(String email);
|
||||
|
||||
/**
|
||||
* 插入用户(注册)
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
int insertUser(User user);
|
||||
|
||||
/**
|
||||
* 修改用户状态
|
||||
* @param id
|
||||
* @param status 0:未激活,1:已激活
|
||||
* @return
|
||||
*/
|
||||
int updateStatus(int id, int status);
|
||||
|
||||
/**
|
||||
* 修改头像
|
||||
* @param id
|
||||
* @param headerUrl
|
||||
* @return
|
||||
*/
|
||||
int updateHeader(int id, String headerUrl);
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
* @param id
|
||||
* @param password
|
||||
* @return
|
||||
*/
|
||||
int updatePassword(int id, String password);
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
对应的 mapper.xml:
|
||||
|
||||
```xml
|
||||
<?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.greate.community.dao.UserMapper">
|
||||
|
||||
<sql id = "insertFields">
|
||||
username, password, salt, email, type, status, activation_code, header_url, create_time
|
||||
</sql>
|
||||
|
||||
<sql id = "selectFields">
|
||||
id, username, password, salt, email, type, status, activation_code, header_url, create_time
|
||||
</sql>
|
||||
|
||||
<!--根据 Id 查询用户信息-->
|
||||
<select id = "selectById" resultType = "User">
|
||||
select <include refid="selectFields"></include>
|
||||
from user
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<!--根据 Username 查询用户信息-->
|
||||
<select id="selectByName" resultType="User">
|
||||
select <include refid="selectFields"></include>
|
||||
from user
|
||||
where username = #{username}
|
||||
</select>
|
||||
|
||||
<!--根据 email 查询用户信息-->
|
||||
<select id="selectByEmail" resultType="User">
|
||||
select <include refid="selectFields"></include>
|
||||
from user
|
||||
where email = #{email}
|
||||
</select>
|
||||
|
||||
<!--插入用户信息(注册)-->
|
||||
<insert id="insertUser" parameterType="User" keyProperty="id">
|
||||
insert into user (<include refid="insertFields"></include>)
|
||||
values(#{username}, #{password}, #{salt}, #{email}, #{type}, #{status}, #{activationCode}, #{headerUrl}, #{createTime})
|
||||
</insert>
|
||||
|
||||
<!--修改用户状态-->
|
||||
<update id="updateStatus">
|
||||
update user set status = #{status} where id = #{id}
|
||||
</update>
|
||||
|
||||
<!--修改用户头像-->
|
||||
<update id="updateHeader">
|
||||
update user set header_url = #{headerUrl} where id = #{id}
|
||||
</update>
|
||||
|
||||
<!--修改密码-->
|
||||
<update id="updatePassword">
|
||||
update user set password = #{password} where id = #{id}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
```
|
||||
|
||||
### Service
|
||||
|
||||
```java
|
||||
@Service
|
||||
public class UserService {
|
||||
|
||||
@Autowired
|
||||
private UserMapper userMapper;
|
||||
|
||||
public User findUserById (int id) {
|
||||
return userMapper.selectById(id);
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
## Page 分页
|
||||
|
||||
```java
|
||||
/**
|
||||
* 封装分页相关的信息
|
||||
*/
|
||||
public class Page {
|
||||
|
||||
// 当前的页码
|
||||
private int current = 1;
|
||||
// 单页显示的帖子数量上限
|
||||
private int limit = 10;
|
||||
// 帖子总数(用于计算总页数)
|
||||
private int rows;
|
||||
// 查询路径(用于复用分页链接, 因为我们不只在首页中有分页,其他界面也会有分页)
|
||||
private String path;
|
||||
|
||||
public int getCurrent() {
|
||||
return current;
|
||||
}
|
||||
|
||||
public void setCurrent(int current) {
|
||||
if (current >= 1) {
|
||||
this.current = current;
|
||||
}
|
||||
}
|
||||
|
||||
public int getLimit() {
|
||||
return limit;
|
||||
}
|
||||
|
||||
public void setLimit(int limit) {
|
||||
if (current >= 1 && limit <= 100) {
|
||||
this.limit = limit;
|
||||
}
|
||||
}
|
||||
|
||||
public int getRows() {
|
||||
return rows;
|
||||
}
|
||||
|
||||
public void setRows(int rows) {
|
||||
if (rows >= 0) {
|
||||
this.rows = rows;
|
||||
}
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前页的起始索引 offset
|
||||
* @return
|
||||
*/
|
||||
public int getOffset() {
|
||||
return current * limit - limit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取总页数
|
||||
* @return
|
||||
*/
|
||||
public int getTotal() {
|
||||
if (rows % limit == 0) {
|
||||
return rows / limit;
|
||||
}
|
||||
else {
|
||||
return rows / limit + 1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分页栏起始页码
|
||||
* 分页栏显示当前页码及其前后两页
|
||||
* @return
|
||||
*/
|
||||
public int getFrom() {
|
||||
int from = current - 2;
|
||||
return from < 1 ? 1 : from;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分页栏结束页码
|
||||
* @return
|
||||
*/
|
||||
public int getTo() {
|
||||
int to = current + 2;
|
||||
int total = getTotal();
|
||||
return to > total ? total : to;
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Controller
|
||||
|
||||
```java
|
||||
@Controller
|
||||
public class HomeController {
|
||||
|
||||
@Autowired
|
||||
private DiscussPostSerivce discussPostSerivce;
|
||||
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
@GetMapping("/index")
|
||||
public String getIndexPage(Model model, Page page) {
|
||||
// 获取总页数
|
||||
page.setRows(discussPostSerivce.findDiscussPostRows(0));
|
||||
page.setPath("/index");
|
||||
|
||||
// 分页查询
|
||||
List<DiscussPost> list = discussPostSerivce.findDiscussPosts(0, page.getOffset(), page.getLimit());
|
||||
// 封装帖子和该帖子对应的用户信息
|
||||
List<Map<String, Object>> discussPosts = new ArrayList<>();
|
||||
if (list != null) {
|
||||
for (DiscussPost post : list) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("post", post);
|
||||
User user = userService.findUserById(post.getUserId());
|
||||
map.put("user", user);
|
||||
discussPosts.add(map);
|
||||
}
|
||||
}
|
||||
model.addAttribute("discussPosts", discussPosts);
|
||||
return "index";
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
🚩 小 Tip:这里不用把 Page 放入 model(`model.addAttribute("page", page);`
|
||||
|
||||
因为在方法调用之前,Spring MVC 会自动实例化 Model 和 Page,并将 Page 注入 Model,所以,在 Thymeleaf 中可以直接访问 Page 对象中的数据
|
||||
|
||||
## 前端界面 index.html
|
||||
|
||||
```html
|
||||
th:each="map:${discussPosts}"
|
||||
```
|
||||
|
||||
表示将每次遍历 `discussPosts` 取出的变量称为 `map`
|
||||
|
310
mvnw
vendored
Normal file
310
mvnw
vendored
Normal file
@ -0,0 +1,310 @@
|
||||
#!/bin/sh
|
||||
# ----------------------------------------------------------------------------
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Maven Start Up Batch script
|
||||
#
|
||||
# Required ENV vars:
|
||||
# ------------------
|
||||
# JAVA_HOME - location of a JDK home dir
|
||||
#
|
||||
# Optional ENV vars
|
||||
# -----------------
|
||||
# M2_HOME - location of maven2's installed home dir
|
||||
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||
# e.g. to debug Maven itself, use
|
||||
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
if [ -z "$MAVEN_SKIP_RC" ] ; then
|
||||
|
||||
if [ -f /etc/mavenrc ] ; then
|
||||
. /etc/mavenrc
|
||||
fi
|
||||
|
||||
if [ -f "$HOME/.mavenrc" ] ; then
|
||||
. "$HOME/.mavenrc"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# OS specific support. $var _must_ be set to either true or false.
|
||||
cygwin=false;
|
||||
darwin=false;
|
||||
mingw=false
|
||||
case "`uname`" in
|
||||
CYGWIN*) cygwin=true ;;
|
||||
MINGW*) mingw=true;;
|
||||
Darwin*) darwin=true
|
||||
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
|
||||
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
if [ -x "/usr/libexec/java_home" ]; then
|
||||
export JAVA_HOME="`/usr/libexec/java_home`"
|
||||
else
|
||||
export JAVA_HOME="/Library/Java/Home"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
if [ -r /etc/gentoo-release ] ; then
|
||||
JAVA_HOME=`java-config --jre-home`
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$M2_HOME" ] ; then
|
||||
## resolve links - $0 may be a link to maven's home
|
||||
PRG="$0"
|
||||
|
||||
# need this for relative symlinks
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG="`dirname "$PRG"`/$link"
|
||||
fi
|
||||
done
|
||||
|
||||
saveddir=`pwd`
|
||||
|
||||
M2_HOME=`dirname "$PRG"`/..
|
||||
|
||||
# make it fully qualified
|
||||
M2_HOME=`cd "$M2_HOME" && pwd`
|
||||
|
||||
cd "$saveddir"
|
||||
# echo Using m2 at $M2_HOME
|
||||
fi
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||
if $cygwin ; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --unix "$M2_HOME"`
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
|
||||
fi
|
||||
|
||||
# For Mingw, ensure paths are in UNIX format before anything is touched
|
||||
if $mingw ; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME="`(cd "$M2_HOME"; pwd)`"
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
javaExecutable="`which javac`"
|
||||
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
|
||||
# readlink(1) is not available as standard on Solaris 10.
|
||||
readLink=`which readlink`
|
||||
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
|
||||
if $darwin ; then
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
|
||||
else
|
||||
javaExecutable="`readlink -f \"$javaExecutable\"`"
|
||||
fi
|
||||
javaHome="`dirname \"$javaExecutable\"`"
|
||||
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
|
||||
JAVA_HOME="$javaHome"
|
||||
export JAVA_HOME
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$JAVACMD" ] ; then
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
else
|
||||
JAVACMD="`which java`"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
echo "Error: JAVA_HOME is not defined correctly." >&2
|
||||
echo " We cannot execute $JAVACMD" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
echo "Warning: JAVA_HOME environment variable is not set."
|
||||
fi
|
||||
|
||||
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
|
||||
|
||||
# traverses directory structure from process work directory to filesystem root
|
||||
# first directory with .mvn subdirectory is considered project base directory
|
||||
find_maven_basedir() {
|
||||
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Path not specified to find_maven_basedir"
|
||||
return 1
|
||||
fi
|
||||
|
||||
basedir="$1"
|
||||
wdir="$1"
|
||||
while [ "$wdir" != '/' ] ; do
|
||||
if [ -d "$wdir"/.mvn ] ; then
|
||||
basedir=$wdir
|
||||
break
|
||||
fi
|
||||
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
|
||||
if [ -d "${wdir}" ]; then
|
||||
wdir=`cd "$wdir/.."; pwd`
|
||||
fi
|
||||
# end of workaround
|
||||
done
|
||||
echo "${basedir}"
|
||||
}
|
||||
|
||||
# concatenates all lines of a file
|
||||
concat_lines() {
|
||||
if [ -f "$1" ]; then
|
||||
echo "$(tr -s '\n' ' ' < "$1")"
|
||||
fi
|
||||
}
|
||||
|
||||
BASE_DIR=`find_maven_basedir "$(pwd)"`
|
||||
if [ -z "$BASE_DIR" ]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
##########################################################################################
|
||||
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||
# This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||
##########################################################################################
|
||||
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found .mvn/wrapper/maven-wrapper.jar"
|
||||
fi
|
||||
else
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
|
||||
fi
|
||||
if [ -n "$MVNW_REPOURL" ]; then
|
||||
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
else
|
||||
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
fi
|
||||
while IFS="=" read key value; do
|
||||
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
|
||||
esac
|
||||
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Downloading from: $jarUrl"
|
||||
fi
|
||||
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
|
||||
if $cygwin; then
|
||||
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
|
||||
fi
|
||||
|
||||
if command -v wget > /dev/null; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found wget ... using wget"
|
||||
fi
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
wget "$jarUrl" -O "$wrapperJarPath"
|
||||
else
|
||||
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
|
||||
fi
|
||||
elif command -v curl > /dev/null; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Found curl ... using curl"
|
||||
fi
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
curl -o "$wrapperJarPath" "$jarUrl" -f
|
||||
else
|
||||
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
|
||||
fi
|
||||
|
||||
else
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo "Falling back to using Java to download"
|
||||
fi
|
||||
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
|
||||
# For Cygwin, switch paths to Windows format before running javac
|
||||
if $cygwin; then
|
||||
javaClass=`cygpath --path --windows "$javaClass"`
|
||||
fi
|
||||
if [ -e "$javaClass" ]; then
|
||||
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo " - Compiling MavenWrapperDownloader.java ..."
|
||||
fi
|
||||
# Compiling the Java class
|
||||
("$JAVA_HOME/bin/javac" "$javaClass")
|
||||
fi
|
||||
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
|
||||
# Running the downloader
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo " - Running MavenWrapperDownloader.java ..."
|
||||
fi
|
||||
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
##########################################################################################
|
||||
# End of extension
|
||||
##########################################################################################
|
||||
|
||||
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
echo $MAVEN_PROJECTBASEDIR
|
||||
fi
|
||||
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin; then
|
||||
[ -n "$M2_HOME" ] &&
|
||||
M2_HOME=`cygpath --path --windows "$M2_HOME"`
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
|
||||
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
|
||||
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
|
||||
fi
|
||||
|
||||
# Provide a "standardized" way to retrieve the CLI args that will
|
||||
# work with both Windows and non-Windows executions.
|
||||
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
|
||||
export MAVEN_CMD_LINE_ARGS
|
||||
|
||||
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
exec "$JAVACMD" \
|
||||
$MAVEN_OPTS \
|
||||
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
|
||||
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
|
||||
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
|
182
mvnw.cmd
vendored
Normal file
182
mvnw.cmd
vendored
Normal file
@ -0,0 +1,182 @@
|
||||
@REM ----------------------------------------------------------------------------
|
||||
@REM Licensed to the Apache Software Foundation (ASF) under one
|
||||
@REM or more contributor license agreements. See the NOTICE file
|
||||
@REM distributed with this work for additional information
|
||||
@REM regarding copyright ownership. The ASF licenses this file
|
||||
@REM to you under the Apache License, Version 2.0 (the
|
||||
@REM "License"); you may not use this file except in compliance
|
||||
@REM with the License. You may obtain a copy of the License at
|
||||
@REM
|
||||
@REM https://www.apache.org/licenses/LICENSE-2.0
|
||||
@REM
|
||||
@REM Unless required by applicable law or agreed to in writing,
|
||||
@REM software distributed under the License is distributed on an
|
||||
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
@REM KIND, either express or implied. See the License for the
|
||||
@REM specific language governing permissions and limitations
|
||||
@REM under the License.
|
||||
@REM ----------------------------------------------------------------------------
|
||||
|
||||
@REM ----------------------------------------------------------------------------
|
||||
@REM Maven Start Up Batch script
|
||||
@REM
|
||||
@REM Required ENV vars:
|
||||
@REM JAVA_HOME - location of a JDK home dir
|
||||
@REM
|
||||
@REM Optional ENV vars
|
||||
@REM M2_HOME - location of maven2's installed home dir
|
||||
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
|
||||
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
|
||||
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||
@REM e.g. to debug Maven itself, use
|
||||
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
@REM ----------------------------------------------------------------------------
|
||||
|
||||
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
|
||||
@echo off
|
||||
@REM set title of command window
|
||||
title %0
|
||||
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
|
||||
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
|
||||
|
||||
@REM set %HOME% to equivalent of $HOME
|
||||
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
|
||||
|
||||
@REM Execute a user defined script before this one
|
||||
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
|
||||
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
|
||||
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
|
||||
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
|
||||
:skipRcPre
|
||||
|
||||
@setlocal
|
||||
|
||||
set ERROR_CODE=0
|
||||
|
||||
@REM To isolate internal variables from possible post scripts, we use another setlocal
|
||||
@setlocal
|
||||
|
||||
@REM ==== START VALIDATION ====
|
||||
if not "%JAVA_HOME%" == "" goto OkJHome
|
||||
|
||||
echo.
|
||||
echo Error: JAVA_HOME not found in your environment. >&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||
echo location of your Java installation. >&2
|
||||
echo.
|
||||
goto error
|
||||
|
||||
:OkJHome
|
||||
if exist "%JAVA_HOME%\bin\java.exe" goto init
|
||||
|
||||
echo.
|
||||
echo Error: JAVA_HOME is set to an invalid directory. >&2
|
||||
echo JAVA_HOME = "%JAVA_HOME%" >&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||
echo location of your Java installation. >&2
|
||||
echo.
|
||||
goto error
|
||||
|
||||
@REM ==== END VALIDATION ====
|
||||
|
||||
:init
|
||||
|
||||
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
|
||||
@REM Fallback to current working directory if not found.
|
||||
|
||||
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
|
||||
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
|
||||
|
||||
set EXEC_DIR=%CD%
|
||||
set WDIR=%EXEC_DIR%
|
||||
:findBaseDir
|
||||
IF EXIST "%WDIR%"\.mvn goto baseDirFound
|
||||
cd ..
|
||||
IF "%WDIR%"=="%CD%" goto baseDirNotFound
|
||||
set WDIR=%CD%
|
||||
goto findBaseDir
|
||||
|
||||
:baseDirFound
|
||||
set MAVEN_PROJECTBASEDIR=%WDIR%
|
||||
cd "%EXEC_DIR%"
|
||||
goto endDetectBaseDir
|
||||
|
||||
:baseDirNotFound
|
||||
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
|
||||
cd "%EXEC_DIR%"
|
||||
|
||||
:endDetectBaseDir
|
||||
|
||||
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
|
||||
|
||||
@setlocal EnableExtensions EnableDelayedExpansion
|
||||
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
|
||||
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
|
||||
|
||||
:endReadAdditionalConfig
|
||||
|
||||
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
|
||||
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
|
||||
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
|
||||
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
|
||||
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
|
||||
)
|
||||
|
||||
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||
if exist %WRAPPER_JAR% (
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Found %WRAPPER_JAR%
|
||||
)
|
||||
) else (
|
||||
if not "%MVNW_REPOURL%" == "" (
|
||||
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
|
||||
)
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Couldn't find %WRAPPER_JAR%, downloading it ...
|
||||
echo Downloading from: %DOWNLOAD_URL%
|
||||
)
|
||||
|
||||
powershell -Command "&{"^
|
||||
"$webclient = new-object System.Net.WebClient;"^
|
||||
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
|
||||
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
|
||||
"}"^
|
||||
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
|
||||
"}"
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Finished downloading %WRAPPER_JAR%
|
||||
)
|
||||
)
|
||||
@REM End of extension
|
||||
|
||||
@REM Provide a "standardized" way to retrieve the CLI args that will
|
||||
@REM work with both Windows and non-Windows executions.
|
||||
set MAVEN_CMD_LINE_ARGS=%*
|
||||
|
||||
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
|
||||
if ERRORLEVEL 1 goto error
|
||||
goto end
|
||||
|
||||
:error
|
||||
set ERROR_CODE=1
|
||||
|
||||
:end
|
||||
@endlocal & set ERROR_CODE=%ERROR_CODE%
|
||||
|
||||
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
|
||||
@REM check for post script, once with legacy .bat ending and once with .cmd ending
|
||||
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
|
||||
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
|
||||
:skipRcPost
|
||||
|
||||
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
|
||||
if "%MAVEN_BATCH_PAUSE%" == "on" pause
|
||||
|
||||
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
|
||||
|
||||
exit /B %ERROR_CODE%
|
136
pom.xml
Normal file
136
pom.xml
Normal file
@ -0,0 +1,136 @@
|
||||
<?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.4.2</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<groupId>com.greate</groupId>
|
||||
<artifactId>community</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>community</name>
|
||||
<description>Demo project for Spring Boot</description>
|
||||
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!--thymeleaf-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!--Devtools 热部署-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<!--Spring Boot Test-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!--MySQL 数据库-->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>5.1.47</version> <!--注意此处的大版本要和 MySQL 的大版本一致-->
|
||||
</dependency>
|
||||
|
||||
<!--Mybatis-->
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter</artifactId>
|
||||
<version>2.1.3</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.9</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-mail</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.github.penggle/kaptcha -->
|
||||
<dependency>
|
||||
<groupId>com.github.penggle</groupId>
|
||||
<artifactId>kaptcha</artifactId>
|
||||
<version>2.3.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 对配置文件中的敏感信息加密 -->
|
||||
<!-- https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter -->
|
||||
<dependency>
|
||||
<groupId>com.github.ulisesbocchio</groupId>
|
||||
<artifactId>jasypt-spring-boot-starter</artifactId>
|
||||
<version>2.1.2</version>
|
||||
</dependency>
|
||||
|
||||
<!--Redis-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!--Kafka-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.kafka</groupId>
|
||||
<artifactId>spring-kafka</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!--Elasticsearch-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!--fastjson-->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<version>1.2.58</version>
|
||||
</dependency>
|
||||
|
||||
<!--lombok-->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
15
sql/init_comment.sql
Normal file
15
sql/init_comment.sql
Normal file
@ -0,0 +1,15 @@
|
||||
DROP TABLE IF EXISTS `comment`;
|
||||
SET character_set_client = utf8mb4 ;
|
||||
CREATE TABLE `comment` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) DEFAULT NULL,
|
||||
`entity_type` int(11) DEFAULT NULL,
|
||||
`entity_id` int(11) DEFAULT NULL,
|
||||
`target_id` int(11) DEFAULT NULL,
|
||||
`content` text,
|
||||
`status` int(11) DEFAULT NULL,
|
||||
`create_time` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `index_user_id` (`user_id`),
|
||||
KEY `index_entity_id` (`entity_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
15
sql/init_discuss_post.sql
Normal file
15
sql/init_discuss_post.sql
Normal file
@ -0,0 +1,15 @@
|
||||
DROP TABLE IF EXISTS `discuss_post`;
|
||||
SET character_set_client = utf8mb4 ;
|
||||
CREATE TABLE `discuss_post` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) DEFAULT NULL,
|
||||
`title` varchar(100) DEFAULT NULL,
|
||||
`content` text,
|
||||
`type` int(11) DEFAULT NULL COMMENT '0-普通; 1-置顶;',
|
||||
`status` int(11) DEFAULT NULL COMMENT '0-正常; 1-精华; 2-拉黑;',
|
||||
`create_time` timestamp NULL DEFAULT NULL,
|
||||
`comment_count` int(11) DEFAULT NULL,
|
||||
`score` double DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `index_user_id` (`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
17
sql/init_user.sql
Normal file
17
sql/init_user.sql
Normal file
@ -0,0 +1,17 @@
|
||||
DROP TABLE IF EXISTS `user`;
|
||||
SET character_set_client = utf8mb4 ;
|
||||
CREATE TABLE `user` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(50) DEFAULT NULL,
|
||||
`password` varchar(50) DEFAULT NULL,
|
||||
`salt` varchar(50) DEFAULT NULL,
|
||||
`email` varchar(100) DEFAULT NULL,
|
||||
`type` int(11) DEFAULT NULL COMMENT '0-普通用户; 1-超级管理员; 2-版主;',
|
||||
`status` int(11) DEFAULT NULL COMMENT '0-未激活; 1-已激活;',
|
||||
`activation_code` varchar(100) DEFAULT NULL,
|
||||
`header_url` varchar(200) DEFAULT NULL,
|
||||
`create_time` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `index_username` (`username`(20)),
|
||||
KEY `index_email` (`email`(20))
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8;
|
9
sql/test_init_data/init_data_commnet.sql
Normal file
9
sql/test_init_data/init_data_commnet.sql
Normal file
File diff suppressed because one or more lines are too long
9
sql/test_init_data/init_data_discuss_post.sql
Normal file
9
sql/test_init_data/init_data_discuss_post.sql
Normal file
File diff suppressed because one or more lines are too long
7
sql/test_init_data/init_data_user.sql
Normal file
7
sql/test_init_data/init_data_user.sql
Normal file
File diff suppressed because one or more lines are too long
13
src/main/java/com/greate/community/CommunityApplication.java
Normal file
13
src/main/java/com/greate/community/CommunityApplication.java
Normal file
@ -0,0 +1,13 @@
|
||||
package com.greate.community;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class CommunityApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(CommunityApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.greate.community.controller;
|
||||
|
||||
import com.greate.community.entity.DiscussPost;
|
||||
import com.greate.community.entity.Page;
|
||||
import com.greate.community.entity.User;
|
||||
import com.greate.community.service.DiscussPostSerivce;
|
||||
import com.greate.community.service.UserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Controller
|
||||
public class HomeController {
|
||||
|
||||
@Autowired
|
||||
private DiscussPostSerivce discussPostSerivce;
|
||||
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
@GetMapping("/index")
|
||||
public String getIndexPage(Model model, Page page) {
|
||||
// 获取总页数
|
||||
page.setRows(discussPostSerivce.findDiscussPostRows(0));
|
||||
page.setPath("/index");
|
||||
|
||||
// 分页查询
|
||||
List<DiscussPost> list = discussPostSerivce.findDiscussPosts(0, page.getOffset(), page.getLimit());
|
||||
// 封装帖子和该帖子对应的用户信息
|
||||
List<Map<String, Object>> discussPosts = new ArrayList<>();
|
||||
if (list != null) {
|
||||
for (DiscussPost post : list) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("post", post);
|
||||
User user = userService.findUserById(post.getUserId());
|
||||
map.put("user", user);
|
||||
discussPosts.add(map);
|
||||
}
|
||||
}
|
||||
model.addAttribute("discussPosts", discussPosts);
|
||||
return "index";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.greate.community.dao;
|
||||
|
||||
import com.greate.community.entity.DiscussPost;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface DiscussPostMapper {
|
||||
|
||||
/**
|
||||
* 分页查询讨论帖信息
|
||||
*
|
||||
* @param userId 当传入的 userId = 0 时查找所有用户的帖子
|
||||
* 当传入的 userId != 0 时,查找该指定用户的帖子
|
||||
* @param offset 每页的起始索引
|
||||
* @param limit 每页显示多少条数据
|
||||
* @return
|
||||
*/
|
||||
List<DiscussPost> selectDiscussPosts(int userId, int offset, int limit);
|
||||
|
||||
/**
|
||||
* 查询讨论贴的个数
|
||||
* @param userId 当传入的 userId = 0 时计算所有用户的帖子总数
|
||||
* 当传入的 userId != 0 时计算该指定用户的帖子总数
|
||||
* @return
|
||||
*/
|
||||
int selectDiscussPostRows(@Param("userId") int userId);
|
||||
}
|
61
src/main/java/com/greate/community/dao/UserMapper.java
Normal file
61
src/main/java/com/greate/community/dao/UserMapper.java
Normal file
@ -0,0 +1,61 @@
|
||||
package com.greate.community.dao;
|
||||
|
||||
import com.greate.community.entity.User;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface UserMapper {
|
||||
|
||||
/**
|
||||
* 根据 id 查询用户
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
User selectById (int id);
|
||||
|
||||
/**
|
||||
* 根据 username 查询用户
|
||||
* @param username
|
||||
* @return
|
||||
*/
|
||||
User selectByName(String username);
|
||||
|
||||
/**
|
||||
* 根据 email 查询用户
|
||||
* @param email
|
||||
* @return
|
||||
*/
|
||||
User selectByEmail(String email);
|
||||
|
||||
/**
|
||||
* 插入用户(注册)
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
int insertUser(User user);
|
||||
|
||||
/**
|
||||
* 修改用户状态
|
||||
* @param id
|
||||
* @param status 0:未激活,1:已激活
|
||||
* @return
|
||||
*/
|
||||
int updateStatus(int id, int status);
|
||||
|
||||
/**
|
||||
* 修改头像
|
||||
* @param id
|
||||
* @param headerUrl
|
||||
* @return
|
||||
*/
|
||||
int updateHeader(int id, String headerUrl);
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
* @param id
|
||||
* @param password
|
||||
* @return
|
||||
*/
|
||||
int updatePassword(int id, String password);
|
||||
|
||||
}
|
107
src/main/java/com/greate/community/entity/DiscussPost.java
Normal file
107
src/main/java/com/greate/community/entity/DiscussPost.java
Normal file
@ -0,0 +1,107 @@
|
||||
package com.greate.community.entity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 讨论贴
|
||||
* 对应数据库表 `discuss_post`
|
||||
*/
|
||||
public class DiscussPost {
|
||||
|
||||
private int id;
|
||||
private int userId;
|
||||
private String title;
|
||||
private String content;
|
||||
private int type;
|
||||
private int status;
|
||||
private Date createTime;
|
||||
private int commentCount;
|
||||
private double score;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public int getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(int userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public int getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(int status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public int getCommentCount() {
|
||||
return commentCount;
|
||||
}
|
||||
|
||||
public void setCommentCount(int commentCount) {
|
||||
this.commentCount = commentCount;
|
||||
}
|
||||
|
||||
public double getScore() {
|
||||
return score;
|
||||
}
|
||||
|
||||
public void setScore(double score) {
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DiscussPost{" +
|
||||
"id=" + id +
|
||||
", userId=" + userId +
|
||||
", title='" + title + '\'' +
|
||||
", content='" + content + '\'' +
|
||||
", type=" + type +
|
||||
", status=" + status +
|
||||
", createTime=" + createTime +
|
||||
", commentCount=" + commentCount +
|
||||
", score=" + score +
|
||||
'}';
|
||||
}
|
||||
}
|
97
src/main/java/com/greate/community/entity/Page.java
Normal file
97
src/main/java/com/greate/community/entity/Page.java
Normal file
@ -0,0 +1,97 @@
|
||||
package com.greate.community.entity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 封装分页相关的信息
|
||||
*/
|
||||
public class Page {
|
||||
|
||||
// 当前的页码
|
||||
private int current = 1;
|
||||
// 单页显示的帖子数量上限
|
||||
private int limit = 10;
|
||||
// 帖子总数(用于计算总页数)
|
||||
private int rows;
|
||||
// 查询路径(用于复用分页链接, 因为我们不只在首页中有分页,其他界面也会有分页)
|
||||
private String path;
|
||||
|
||||
public int getCurrent() {
|
||||
return current;
|
||||
}
|
||||
|
||||
public void setCurrent(int current) {
|
||||
if (current >= 1) {
|
||||
this.current = current;
|
||||
}
|
||||
}
|
||||
|
||||
public int getLimit() {
|
||||
return limit;
|
||||
}
|
||||
|
||||
public void setLimit(int limit) {
|
||||
if (current >= 1 && limit <= 100) {
|
||||
this.limit = limit;
|
||||
}
|
||||
}
|
||||
|
||||
public int getRows() {
|
||||
return rows;
|
||||
}
|
||||
|
||||
public void setRows(int rows) {
|
||||
if (rows >= 0) {
|
||||
this.rows = rows;
|
||||
}
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前页的起始索引 offset
|
||||
* @return
|
||||
*/
|
||||
public int getOffset() {
|
||||
return current * limit - limit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取总页数
|
||||
* @return
|
||||
*/
|
||||
public int getTotal() {
|
||||
if (rows % limit == 0) {
|
||||
return rows / limit;
|
||||
}
|
||||
else {
|
||||
return rows / limit + 1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分页栏起始页码
|
||||
* 分页栏显示当前页码及其前后两页
|
||||
* @return
|
||||
*/
|
||||
public int getFrom() {
|
||||
int from = current - 2;
|
||||
return from < 1 ? 1 : from;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分页栏结束页码
|
||||
* @return
|
||||
*/
|
||||
public int getTo() {
|
||||
int to = current + 2;
|
||||
int total = getTotal();
|
||||
return to > total ? total : to;
|
||||
}
|
||||
}
|
118
src/main/java/com/greate/community/entity/User.java
Normal file
118
src/main/java/com/greate/community/entity/User.java
Normal file
@ -0,0 +1,118 @@
|
||||
package com.greate.community.entity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 用户
|
||||
* 对应数据库表 `user`
|
||||
*/
|
||||
public class User {
|
||||
|
||||
private int id;
|
||||
private String username;
|
||||
private String password;
|
||||
private String salt;
|
||||
private String email;
|
||||
private int type;
|
||||
private int status;
|
||||
private String activationCode;
|
||||
private String headerUrl;
|
||||
private Date createTime;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public String getSalt() {
|
||||
return salt;
|
||||
}
|
||||
|
||||
public void setSalt(String salt) {
|
||||
this.salt = salt;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public int getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(int status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getActivationCode() {
|
||||
return activationCode;
|
||||
}
|
||||
|
||||
public void setActivationCode(String activationCode) {
|
||||
this.activationCode = activationCode;
|
||||
}
|
||||
|
||||
public String getHeaderUrl() {
|
||||
return headerUrl;
|
||||
}
|
||||
|
||||
public void setHeaderUrl(String headerUrl) {
|
||||
this.headerUrl = headerUrl;
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "User{" +
|
||||
"id=" + id +
|
||||
", username='" + username + '\'' +
|
||||
", password='" + password + '\'' +
|
||||
", salt='" + salt + '\'' +
|
||||
", email='" + email + '\'' +
|
||||
", type=" + type +
|
||||
", status=" + status +
|
||||
", activationCode='" + activationCode + '\'' +
|
||||
", headerUrl='" + headerUrl + '\'' +
|
||||
", createTime=" + createTime +
|
||||
'}';
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.greate.community.service;
|
||||
|
||||
import com.greate.community.dao.DiscussPostMapper;
|
||||
import com.greate.community.entity.DiscussPost;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class DiscussPostSerivce {
|
||||
|
||||
@Autowired
|
||||
private DiscussPostMapper discussPostMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询讨论帖信息
|
||||
*
|
||||
* @param userId 当传入的 userId = 0 时查找所有用户的帖子
|
||||
* 当传入的 userId != 0 时,查找该指定用户的帖子
|
||||
* @param offset 每页的起始索引
|
||||
* @param limit 每页显示多少条数据
|
||||
* @return
|
||||
*/
|
||||
public List<DiscussPost> findDiscussPosts (int userId, int offset, int limit) {
|
||||
return discussPostMapper.selectDiscussPosts(userId, offset, limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询讨论贴的个数
|
||||
* @param userId 当传入的 userId = 0 时计算所有用户的帖子总数
|
||||
* 当传入的 userId != 0 时计算该指定用户的帖子总数
|
||||
* @return
|
||||
*/
|
||||
public int findDiscussPostRows (int userId) {
|
||||
return discussPostMapper.selectDiscussPostRows(userId);
|
||||
}
|
||||
|
||||
}
|
18
src/main/java/com/greate/community/service/UserService.java
Normal file
18
src/main/java/com/greate/community/service/UserService.java
Normal file
@ -0,0 +1,18 @@
|
||||
package com.greate.community.service;
|
||||
|
||||
import com.greate.community.dao.UserMapper;
|
||||
import com.greate.community.entity.User;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class UserService {
|
||||
|
||||
@Autowired
|
||||
private UserMapper userMapper;
|
||||
|
||||
public User findUserById (int id) {
|
||||
return userMapper.selectById(id);
|
||||
}
|
||||
|
||||
}
|
20
src/main/resources/application.properties
Normal file
20
src/main/resources/application.properties
Normal file
@ -0,0 +1,20 @@
|
||||
# ServerProperties
|
||||
server.port=8080
|
||||
|
||||
# ThymeleafProperties
|
||||
spring.thymeleaf.cache=false
|
||||
|
||||
# MySQL
|
||||
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/greatecommunity?characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong
|
||||
spring.datasource.username = root
|
||||
spring.datasource.password = root
|
||||
# Mysql 5.0+ 版本使用 com.mysql.jdbc.Driver
|
||||
# 如果是 8.0+ 的版本请改成 com.mysql.cj.jdbc.Driver
|
||||
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
|
||||
|
||||
# MybatisProperties
|
||||
mybatis.mapper-locations = classpath:mapper/*.xml
|
||||
mybatis.type-aliases-package = com.greate.community.entity
|
||||
mybatis.configuration.useGeneratedKeys = true
|
||||
mybatis.configuration.mapUnderscoreToCamelCase = true
|
||||
|
93
src/main/resources/logback-spring.xml
Normal file
93
src/main/resources/logback-spring.xml
Normal file
@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<contextName>community</contextName>
|
||||
<property name="LOG_PATH" value="E:/GreateCommunity/log"/>
|
||||
<property name="APPDIR" value="community"/>
|
||||
|
||||
<!-- error file -->
|
||||
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_PATH}/${APPDIR}/log_error.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||
<maxFileSize>5MB</maxFileSize>
|
||||
</timeBasedFileNamingAndTriggeringPolicy>
|
||||
<maxHistory>30</maxHistory>
|
||||
</rollingPolicy>
|
||||
<append>true</append>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
|
||||
<charset>utf-8</charset>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>error</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- warn file -->
|
||||
<appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||
<maxFileSize>5MB</maxFileSize>
|
||||
</timeBasedFileNamingAndTriggeringPolicy>
|
||||
<maxHistory>30</maxHistory>
|
||||
</rollingPolicy>
|
||||
<append>true</append>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
|
||||
<charset>utf-8</charset>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>warn</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- info file -->
|
||||
<appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_PATH}/${APPDIR}/log_info.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||
<maxFileSize>5MB</maxFileSize>
|
||||
</timeBasedFileNamingAndTriggeringPolicy>
|
||||
<maxHistory>30</maxHistory>
|
||||
</rollingPolicy>
|
||||
<append>true</append>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
|
||||
<charset>utf-8</charset>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>info</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- console -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
|
||||
<charset>utf-8</charset>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>debug</level>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<logger name="com.greate.community" level="debug"/>
|
||||
|
||||
<root level="info">
|
||||
<appender-ref ref="FILE_ERROR"/>
|
||||
<appender-ref ref="FILE_WARN"/>
|
||||
<appender-ref ref="FILE_INFO"/>
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
|
||||
</configuration>
|
34
src/main/resources/mapper/discusspost-mapper.xml
Normal file
34
src/main/resources/mapper/discusspost-mapper.xml
Normal file
@ -0,0 +1,34 @@
|
||||
<?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.greate.community.dao.DiscussPostMapper">
|
||||
|
||||
<sql id = "selectFields">
|
||||
id, user_id, title, content, type, status, create_time, comment_count, score
|
||||
</sql>
|
||||
|
||||
<!--分页查询讨论贴信息-->
|
||||
<!--不显示拉黑的帖子, 按照是否置顶和创建时间排序-->
|
||||
<select id = "selectDiscussPosts" resultType="DiscussPost">
|
||||
select <include refid="selectFields"></include>
|
||||
from discuss_post
|
||||
where status != 2
|
||||
<if test = "userId!=0">
|
||||
and user_id = #{userId}
|
||||
</if>
|
||||
order by type desc, create_time desc
|
||||
limit #{offset}, #{limit}
|
||||
</select>
|
||||
|
||||
<!--查询讨论贴的个数-->
|
||||
<select id = "selectDiscussPostRows" resultType="int">
|
||||
select count(id)
|
||||
from discuss_post
|
||||
where status != 2
|
||||
<if test = "userId != 0">
|
||||
and user_id = #{userId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
</mapper>
|
57
src/main/resources/mapper/user-mapper.xml
Normal file
57
src/main/resources/mapper/user-mapper.xml
Normal file
@ -0,0 +1,57 @@
|
||||
<?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.greate.community.dao.UserMapper">
|
||||
|
||||
<sql id = "insertFields">
|
||||
username, password, salt, email, type, status, activation_code, header_url, create_time
|
||||
</sql>
|
||||
|
||||
<sql id = "selectFields">
|
||||
id, username, password, salt, email, type, status, activation_code, header_url, create_time
|
||||
</sql>
|
||||
|
||||
<!--根据 Id 查询用户信息-->
|
||||
<select id = "selectById" resultType = "User">
|
||||
select <include refid="selectFields"></include>
|
||||
from user
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<!--根据 Username 查询用户信息-->
|
||||
<select id="selectByName" resultType="User">
|
||||
select <include refid="selectFields"></include>
|
||||
from user
|
||||
where username = #{username}
|
||||
</select>
|
||||
|
||||
<!--根据 email 查询用户信息-->
|
||||
<select id="selectByEmail" resultType="User">
|
||||
select <include refid="selectFields"></include>
|
||||
from user
|
||||
where email = #{email}
|
||||
</select>
|
||||
|
||||
<!--插入用户信息(注册)-->
|
||||
<insert id="insertUser" parameterType="User" keyProperty="id">
|
||||
insert into user (<include refid="insertFields"></include>)
|
||||
values(#{username}, #{password}, #{salt}, #{email}, #{type}, #{status}, #{activationCode}, #{headerUrl}, #{createTime})
|
||||
</insert>
|
||||
|
||||
<!--修改用户状态-->
|
||||
<update id="updateStatus">
|
||||
update user set status = #{status} where id = #{id}
|
||||
</update>
|
||||
|
||||
<!--修改用户头像-->
|
||||
<update id="updateHeader">
|
||||
update user set header_url = #{headerUrl} where id = #{id}
|
||||
</update>
|
||||
|
||||
<!--修改密码-->
|
||||
<update id="updatePassword">
|
||||
update user set password = #{password} where id = #{id}
|
||||
</update>
|
||||
|
||||
</mapper>
|
7
src/main/resources/static/css/bootstrap.min.css
vendored
Normal file
7
src/main/resources/static/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
21
src/main/resources/static/css/discuss-detail.css
Normal file
21
src/main/resources/static/css/discuss-detail.css
Normal file
@ -0,0 +1,21 @@
|
||||
.content {
|
||||
font-size: 16px;
|
||||
line-height: 2em;
|
||||
}
|
||||
|
||||
.replyform textarea {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.floor {
|
||||
background: #dcdadc;
|
||||
padding: 4px 12px;
|
||||
border-radius: 3px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.input-size {
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
}
|
145
src/main/resources/static/css/global.css
Normal file
145
src/main/resources/static/css/global.css
Normal file
@ -0,0 +1,145 @@
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #eee;
|
||||
font-family: arial, STHeiti, 'Microsoft YaHei', \5b8b\4f53;
|
||||
font-size: 14px;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.nk-container {
|
||||
position: relative;
|
||||
height: auto;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 960px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
header .navbar-brand {
|
||||
background: url('http://static.nowcoder.com/images/res/logo/logo-v3.png') no-repeat;
|
||||
background-size: 147px 42px;
|
||||
width: 147px;
|
||||
height: 42px;
|
||||
margin: 5px 15px 5px 0;
|
||||
}
|
||||
|
||||
header .navbar {
|
||||
padding: 5px 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
header .badge {
|
||||
position: absolute;
|
||||
top: -3px;
|
||||
left: 33px;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 20px 0;
|
||||
font-size: 12px;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
footer .qrcode {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
footer .detail-info{
|
||||
border-left: 1px solid #888;
|
||||
}
|
||||
|
||||
footer .company-info li {
|
||||
padding-left: 16px;
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
.main {
|
||||
padding: 20px 0;
|
||||
padding-bottom: 200px;
|
||||
}
|
||||
|
||||
.main .container {
|
||||
background: #fff;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
i {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
u {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
b {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.font-size-12 {
|
||||
font-size: 12px;
|
||||
}
|
||||
.font-size-14 {
|
||||
font-size: 14px;
|
||||
}
|
||||
.font-size-16 {
|
||||
font-size: 16px;
|
||||
}
|
||||
.font-size-18 {
|
||||
font-size: 18px;
|
||||
}
|
||||
.font-size-20 {
|
||||
font-size: 20px;
|
||||
}
|
||||
.font-size-22 {
|
||||
font-size: 20px;
|
||||
}
|
||||
.font-size-24 {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.rt-0 {
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.square {
|
||||
display: inline-block;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
background: #ff6547;
|
||||
margin-bottom: 2px;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.bg-gray {
|
||||
background: #eff0f2;
|
||||
}
|
||||
|
||||
.user-header {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: normal;
|
||||
color: red;
|
||||
}
|
16
src/main/resources/static/css/letter.css
Normal file
16
src/main/resources/static/css/letter.css
Normal file
@ -0,0 +1,16 @@
|
||||
.main .nav .badge {
|
||||
position: absolute;
|
||||
top: -3px;
|
||||
left: 68px;
|
||||
}
|
||||
|
||||
.main .media .badge {
|
||||
position: absolute;
|
||||
top: 12px;
|
||||
left: -3px;
|
||||
}
|
||||
|
||||
.toast {
|
||||
max-width: 100%;
|
||||
width: 80%;
|
||||
}
|
3
src/main/resources/static/css/login.css
Normal file
3
src/main/resources/static/css/login.css
Normal file
@ -0,0 +1,3 @@
|
||||
.main .container {
|
||||
width: 720px;
|
||||
}
|
22
src/main/resources/static/html/student.html
Normal file
22
src/main/resources/static/html/student.html
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>增加学生</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form method="post" action="/community/alpha/student">
|
||||
<p>
|
||||
姓名: <input type="text" name="name">
|
||||
</p>
|
||||
<p>
|
||||
年龄: <input type="text" name="age">
|
||||
</p>
|
||||
<p>
|
||||
<input type="submit" value="保存">
|
||||
</p>
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
BIN
src/main/resources/static/img/404.png
Normal file
BIN
src/main/resources/static/img/404.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 60 KiB |
BIN
src/main/resources/static/img/captcha.png
Normal file
BIN
src/main/resources/static/img/captcha.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
BIN
src/main/resources/static/img/error.png
Normal file
BIN
src/main/resources/static/img/error.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
7
src/main/resources/static/js/bootstrap.min.js
vendored
Normal file
7
src/main/resources/static/js/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
32
src/main/resources/static/js/global.js
Normal file
32
src/main/resources/static/js/global.js
Normal file
@ -0,0 +1,32 @@
|
||||
window.alert = function(message) {
|
||||
if(!$(".alert-box").length) {
|
||||
$("body").append(
|
||||
'<div class="modal alert-box" tabindex="-1" role="dialog">'+
|
||||
'<div class="modal-dialog" role="document">'+
|
||||
'<div class="modal-content">'+
|
||||
'<div class="modal-header">'+
|
||||
'<h5 class="modal-title">提示</h5>'+
|
||||
'<button type="button" class="close" data-dismiss="modal" aria-label="Close">'+
|
||||
'<span aria-hidden="true">×</span>'+
|
||||
'</button>'+
|
||||
'</div>'+
|
||||
'<div class="modal-body">'+
|
||||
'<p></p>'+
|
||||
'</div>'+
|
||||
'<div class="modal-footer">'+
|
||||
'<button type="button" class="btn btn-secondary" data-dismiss="modal">确定</button>'+
|
||||
'</div>'+
|
||||
'</div>'+
|
||||
'</div>'+
|
||||
'</div>'
|
||||
);
|
||||
}
|
||||
|
||||
var h = $(".alert-box").height();
|
||||
var y = h / 2 - 100;
|
||||
if(h > 600) y -= 100;
|
||||
$(".alert-box .modal-dialog").css("margin", (y < 0 ? 0 : y) + "px auto");
|
||||
|
||||
$(".alert-box .modal-body p").text(message);
|
||||
$(".alert-box").modal("show");
|
||||
}
|
11
src/main/resources/static/js/index.js
Normal file
11
src/main/resources/static/js/index.js
Normal file
@ -0,0 +1,11 @@
|
||||
$(function(){
|
||||
$("#publishBtn").click(publish);
|
||||
});
|
||||
|
||||
function publish() {
|
||||
$("#publishModal").modal("hide");
|
||||
$("#hintModal").modal("show");
|
||||
setTimeout(function(){
|
||||
$("#hintModal").modal("hide");
|
||||
}, 2000);
|
||||
}
|
4
src/main/resources/static/js/jquery-3.1.0.min.js
vendored
Normal file
4
src/main/resources/static/js/jquery-3.1.0.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
17
src/main/resources/static/js/letter.js
Normal file
17
src/main/resources/static/js/letter.js
Normal file
@ -0,0 +1,17 @@
|
||||
$(function(){
|
||||
$("#sendBtn").click(send_letter);
|
||||
$(".close").click(delete_msg);
|
||||
});
|
||||
|
||||
function send_letter() {
|
||||
$("#sendModal").modal("hide");
|
||||
$("#hintModal").modal("show");
|
||||
setTimeout(function(){
|
||||
$("#hintModal").modal("hide");
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
function delete_msg() {
|
||||
// TODO 删除数据
|
||||
$(this).parents(".media").remove();
|
||||
}
|
5
src/main/resources/static/js/popper.min.js
vendored
Normal file
5
src/main/resources/static/js/popper.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
14
src/main/resources/static/js/profile.js
Normal file
14
src/main/resources/static/js/profile.js
Normal file
@ -0,0 +1,14 @@
|
||||
$(function(){
|
||||
$(".follow-btn").click(follow);
|
||||
});
|
||||
|
||||
function follow() {
|
||||
var btn = this;
|
||||
if($(btn).hasClass("btn-info")) {
|
||||
// 关注TA
|
||||
$(btn).text("已关注").removeClass("btn-info").addClass("btn-secondary");
|
||||
} else {
|
||||
// 取消关注
|
||||
$(btn).text("关注TA").removeClass("btn-secondary").addClass("btn-info");
|
||||
}
|
||||
}
|
18
src/main/resources/static/js/register.js
Normal file
18
src/main/resources/static/js/register.js
Normal file
@ -0,0 +1,18 @@
|
||||
$(function(){
|
||||
$("form").submit(check_data);
|
||||
$("input").focus(clear_error);
|
||||
});
|
||||
|
||||
function check_data() {
|
||||
var pwd1 = $("#password").val();
|
||||
var pwd2 = $("#confirm-password").val();
|
||||
if(pwd1 != pwd2) {
|
||||
$("#confirm-password").addClass("is-invalid");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function clear_error() {
|
||||
$(this).removeClass("is-invalid");
|
||||
}
|
11
src/main/resources/templates/demo/view.html
Normal file
11
src/main/resources/templates/demo/view.html
Normal file
@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Teacher</title>
|
||||
</head>
|
||||
<body>
|
||||
<p th:text="${name}"></p>
|
||||
<p th:text="${age}"></p>
|
||||
</body>
|
||||
</html>
|
235
src/main/resources/templates/index.html
Normal file
235
src/main/resources/templates/index.html
Normal file
@ -0,0 +1,235 @@
|
||||
<!doctype html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png" />
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/bootstrap.min.css}" />
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/global.css}" />
|
||||
<title>GreateCommunity-首页</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="site/letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="site/register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="site/login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="site/profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="site/setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="site/login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="site/search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<div class="position-relative">
|
||||
<!-- 筛选条件 -->
|
||||
<ul class="nav nav-tabs mb-3">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="#">最新</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">最热</a>
|
||||
</li>
|
||||
</ul>
|
||||
<button type="button" class="btn btn-primary btn-sm position-absolute rt-0" data-toggle="modal" data-target="#publishModal">我要发布</button>
|
||||
</div>
|
||||
<!-- 弹出框 -->
|
||||
<div class="modal fade" id="publishModal" tabindex="-1" role="dialog" aria-labelledby="publishModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="publishModalLabel">新帖发布</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="recipient-name" class="col-form-label">标题:</label>
|
||||
<input type="text" class="form-control" id="recipient-name">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="message-text" class="col-form-label">正文:</label>
|
||||
<textarea class="form-control" id="message-text" rows="15"></textarea>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
|
||||
<button type="button" class="btn btn-primary" id="publishBtn">发布</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 提示框 -->
|
||||
<div class="modal fade" id="hintModal" tabindex="-1" role="dialog" aria-labelledby="hintModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="hintModalLabel">提示</h5>
|
||||
</div>
|
||||
<div class="modal-body" id="hintBody">
|
||||
发布完毕!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 帖子列表 -->
|
||||
<ul class="list-unstyled">
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom" th:each="map:${discussPosts}">
|
||||
<a href="site/profile.html">
|
||||
<img th:src="${map.user.headerUrl}" class="mr-4 rounded-circle" alt="用户头像" style="width:50px;height:50px;">
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<a href="#" th:utext="${map.post.title}">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
<span class="badge badge-secondary bg-primary" th:if="${map.post.type==1}">置顶</span>
|
||||
<span class="badge badge-secondary bg-danger" th:if="${map.post.status==1}">精华</span>
|
||||
</h6>
|
||||
<div class="text-muted font-size-12">
|
||||
<u class="mr-3" th:utext="${map.user.username}">寒江雪</u> 发布于 <b th:text="${#dates.format(map.post.createTime,'yyyy-MM-dd HH:mm:ss')}">2019-04-15 15:32:18</b>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2">赞 11</li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2">回帖 7</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!--分页 -->
|
||||
<nav class="mt-5" th:if = "${page.rows>0}">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item">
|
||||
<a class="page-link" th:href="@{${page.path}(current=1)}">首页</a>
|
||||
</li>
|
||||
<li th:class="|page-item ${page.current==1?'disabled':''}|">
|
||||
<a class="page-link" th:href="@{${page.path}(current=${page.current-1})}">上一页</a>
|
||||
</li>
|
||||
<!--numbers.sequence 生成一个 page.from 到 page.to 的连续整数数组-->
|
||||
<li th:each="i:${#numbers.sequence(page.from,page.to)}" th:class="|page-item ${i==page.current? 'active' : ''}|" >
|
||||
<a class="page-link" th:href="@{${page.path}(current=${i})}" th:text="${i}"></a>
|
||||
</li>
|
||||
<li th:class="|page-item ${page.current==page.total ? 'disabled':''}|">
|
||||
<a class="page-link" th:href="@{${page.path}(current=${page.current+1})}">下一页</a>
|
||||
</li>
|
||||
<li class="page-item">
|
||||
<a class="page-link" th:href="@{${page.path}(current=${page.total})}">末页</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script th:src="@{/js/jquery-3.1.0.min.js}"></script>
|
||||
<script th:src="@{/js/popper.min.js}"></script>
|
||||
<script th:src="@{/js/bootstrap.min.js}"></script>
|
||||
<script th:src="@{/js/global.js}"></script>
|
||||
<script th:src="@{/js/index.js}"></script>
|
||||
</body>
|
||||
</html>
|
20
src/main/resources/templates/mail/activation.html
Normal file
20
src/main/resources/templates/mail/activation.html
Normal file
@ -0,0 +1,20 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<title>牛客网-激活账号</title>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>
|
||||
<b>xxx@xxx.com</b>, 您好!
|
||||
</p>
|
||||
<p>
|
||||
您正在注册牛客网, 这是一封激活邮件, 请点击
|
||||
<a href="#">http://www.nowcoder.com/activation/abcdefg123456.html</a>,
|
||||
激活您的牛客账号!
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
19
src/main/resources/templates/mail/forget.html
Normal file
19
src/main/resources/templates/mail/forget.html
Normal file
@ -0,0 +1,19 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<title>牛客网-忘记密码</title>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>
|
||||
<b>xxx@xxx.com</b>, 您好!
|
||||
</p>
|
||||
<p>
|
||||
您正在找回牛客账号的密码, 本次操作的验证码为 <b>u5s6dt</b> ,
|
||||
有效时间5分钟, 请您及时进行操作!
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
163
src/main/resources/templates/site/admin/data.html
Normal file
163
src/main/resources/templates/site/admin/data.html
Normal file
@ -0,0 +1,163 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../../css/global.css" />
|
||||
<title>牛客网-数据统计</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="../letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="../profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="../setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="../login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="../site/search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<!-- 网站UV -->
|
||||
<div class="container pl-5 pr-5 pt-3 pb-3 mt-3">
|
||||
<h6 class="mt-3"><b class="square"></b> 网站 UV</h6>
|
||||
<form class="form-inline mt-3">
|
||||
<input type="date" class="form-control" required/>
|
||||
<input type="date" class="form-control ml-3" required/>
|
||||
<button type="button" class="btn btn-primary ml-3">开始统计</button>
|
||||
</form>
|
||||
<ul class="list-group mt-3 mb-3">
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
统计结果
|
||||
<span class="badge badge-primary badge-danger font-size-14">0</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- 活跃用户 -->
|
||||
<div class="container pl-5 pr-5 pt-3 pb-3 mt-4">
|
||||
<h6 class="mt-3"><b class="square"></b> 活跃用户</h6>
|
||||
<form class="form-inline mt-3">
|
||||
<input type="date" class="form-control" required/>
|
||||
<input type="date" class="form-control ml-3" required/>
|
||||
<button type="button" class="btn btn-primary ml-3">开始统计</button>
|
||||
</form>
|
||||
<ul class="list-group mt-3 mb-3">
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
统计结果
|
||||
<span class="badge badge-primary badge-danger font-size-14">0</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
329
src/main/resources/templates/site/discuss-detail.html
Normal file
329
src/main/resources/templates/site/discuss-detail.html
Normal file
@ -0,0 +1,329 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<link rel="stylesheet" href="../css/discuss-detail.css" />
|
||||
<title>牛客网-帖子详情</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<!-- 帖子详情 -->
|
||||
<div class="container">
|
||||
<!-- 标题 -->
|
||||
<h6 class="mb-4">
|
||||
<img src="http://static.nowcoder.com/images/img/icons/ico-discuss.png"/>
|
||||
<span>备战春招,面试刷题跟他复习,一个月全搞定!</span>
|
||||
<div class="float-right">
|
||||
<button type="button" class="btn btn-danger btn-sm">置顶</button>
|
||||
<button type="button" class="btn btn-danger btn-sm">加精</button>
|
||||
<button type="button" class="btn btn-danger btn-sm">删除</button>
|
||||
</div>
|
||||
</h6>
|
||||
<!-- 作者 -->
|
||||
<div class="media pb-3 border-bottom">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="align-self-start mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<div class="mt-0 text-warning">寒江雪</div>
|
||||
<div class="text-muted mt-3">
|
||||
发布于 <b>2019-04-15 15:32:18</b>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">赞 11</a></li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2"><a href="#replyform" class="text-primary">回帖 7</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 正文 -->
|
||||
<div class="mt-4 mb-3 content">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗?
|
||||
如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,春招的求职黄金时期已经来啦!!!
|
||||
再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。
|
||||
现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了,
|
||||
那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的?
|
||||
跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
</div>
|
||||
<!-- 回帖 -->
|
||||
<div class="container mt-3">
|
||||
<!-- 回帖数量 -->
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<h6><b class="square"></b> <i>30</i>条回帖</h6>
|
||||
</div>
|
||||
<div class="col-4 text-right">
|
||||
<a href="#replyform" class="btn btn-primary btn-sm"> 回 帖 </a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 回帖列表 -->
|
||||
<ul class="list-unstyled mt-4">
|
||||
<!-- 第1条回帖 -->
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/2t.png" class="align-self-start mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<div class="mt-0">
|
||||
<span class="font-size-12 text-success">掉脑袋切切</span>
|
||||
<span class="badge badge-secondary float-right floor">1#</span>
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
这开课时间是不是有点晚啊。。。
|
||||
</div>
|
||||
<div class="mt-4 text-muted font-size-12">
|
||||
<span>发布于 <b>2019-04-15 15:32:18</b></span>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">赞(1)</a></li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">回复(2)</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- 回复列表 -->
|
||||
<ul class="list-unstyled mt-4 bg-gray p-3 font-size-12 text-muted">
|
||||
<!-- 第1条回复 -->
|
||||
<li class="pb-3 pt-3 mb-3 border-bottom">
|
||||
<div>
|
||||
<span><b class="text-info">寒江雪</b>: </span>
|
||||
<span>这个是直播时间哈,觉得晚的话可以直接看之前的完整录播的~</span>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<span>2019-04-15 15:32:18</span>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">赞(1)</a></li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2"><a href="#huifu01" data-toggle="collapse" class="text-primary">回复</a></li>
|
||||
</ul>
|
||||
<div id="huifu01" class="mt-4 collapse">
|
||||
<div>
|
||||
<input type="text" class="input-size" placeholder="回复寒江雪"/>
|
||||
</div>
|
||||
<div class="text-right mt-2">
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="#"> 回 复 </button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<!-- 第2条回复 -->
|
||||
<li class="pb-3 pt-3 mb-3 border-bottom">
|
||||
<div>
|
||||
<span><i class="text-info">Sissi</i> 回复 <b class="text-info">寒江雪</b>: </span>
|
||||
<span>怎么买录播课程呢</span>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<span>2019-04-15 15:32:18</span>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">赞(1)</a></li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2"><a href="#huifu02" data-toggle="collapse" class="text-primary">回复</a></li>
|
||||
</ul>
|
||||
<div id="huifu02" class="mt-4 collapse">
|
||||
<div>
|
||||
<input type="text" class="input-size" placeholder="回复Sissi" />
|
||||
</div>
|
||||
<div class="text-right mt-2">
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="#"> 回 复 </button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<!-- 回复输入框 -->
|
||||
<li class="pb-3 pt-3">
|
||||
<div>
|
||||
<input type="text" class="input-size" placeholder="请输入你的观点"/>
|
||||
</div>
|
||||
<div class="text-right mt-2">
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="#"> 回 复 </button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<!-- 第2条回帖 -->
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/3t.png" class="align-self-start mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<div class="mt-0">
|
||||
<span class="font-size-12 text-success">Nikeless</span>
|
||||
<span class="badge badge-secondary float-right floor">1#</span>
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
强烈支持!!!
|
||||
</div>
|
||||
<div class="mt-4 text-muted font-size-12">
|
||||
<span>发布于 <b>2019-04-15 15:32:18</b></span>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">赞(1)</a></li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">回复(2)</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- 回复列表 -->
|
||||
<ul class="list-unstyled mt-4 bg-gray p-3 font-size-12 text-muted">
|
||||
<!-- 回复输入框 -->
|
||||
<li class="pb-3 pt-3">
|
||||
<div>
|
||||
<input type="text" class="input-size" placeholder="请输入你的观点"/>
|
||||
</div>
|
||||
<div class="text-right mt-2">
|
||||
<button type="button" class="btn btn-primary btn-sm" onclick="#"> 回 复 </button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 分页 -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item"><a class="page-link" href="#">首页</a></li>
|
||||
<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">4</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">5</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">下一页</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">末页</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- 回帖输入 -->
|
||||
<div class="container mt-3">
|
||||
<form class="replyform">
|
||||
<p class="mt-3">
|
||||
<a name="replyform"></a>
|
||||
<textarea placeholder="在这里畅所欲言你的看法吧!"></textarea>
|
||||
</p>
|
||||
<p class="text-right">
|
||||
<button type="submit" class="btn btn-primary btn-sm"> 回 帖 </button>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
135
src/main/resources/templates/site/error/404.html
Normal file
135
src/main/resources/templates/site/error/404.html
Normal file
@ -0,0 +1,135 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../../css/global.css" />
|
||||
<title>牛客网-404</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="../letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="../profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="../setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="../login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="../search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container pl-5 pr-5 pt-3 pb-3 mt-3 mb-3">
|
||||
<img src="../../img/404.png" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
135
src/main/resources/templates/site/error/500.html
Normal file
135
src/main/resources/templates/site/error/500.html
Normal file
@ -0,0 +1,135 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../../css/global.css" />
|
||||
<title>牛客网-500</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="../letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="../profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="../setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="../login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="../search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container pl-5 pr-5 pt-3 pb-3 mt-3 mb-3">
|
||||
<img src="../../img/error.png" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
236
src/main/resources/templates/site/followee.html
Normal file
236
src/main/resources/templates/site/followee.html
Normal file
@ -0,0 +1,236 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<title>牛客网-关注</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<div class="position-relative">
|
||||
<!-- 选项 -->
|
||||
<ul class="nav nav-tabs mb-3">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link position-relative active" href="followee.html"><i class="text-info">Nowcoder</i> 关注的人</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link position-relative" href="follower.html">关注 <i class="text-info">Nowcoder</i> 的人</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a href="profile.html" class="text-muted position-absolute rt-0">返回个人主页></a>
|
||||
</div>
|
||||
|
||||
<!-- 关注列表 -->
|
||||
<ul class="list-unstyled">
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 分页 -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item"><a class="page-link" href="#">首页</a></li>
|
||||
<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">4</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">5</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">下一页</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">末页</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
<script src="../js/profile.js"></script>
|
||||
</body>
|
||||
</html>
|
236
src/main/resources/templates/site/follower.html
Normal file
236
src/main/resources/templates/site/follower.html
Normal file
@ -0,0 +1,236 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<title>牛客网-关注</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<div class="position-relative">
|
||||
<!-- 选项 -->
|
||||
<ul class="nav nav-tabs mb-3">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link position-relative" href="followee.html"><i class="text-info">Nowcoder</i> 关注的人</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link position-relative active" href="follower.html">关注 <i class="text-info">Nowcoder</i> 的人</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a href="profile.html" class="text-muted position-absolute rt-0">返回个人主页></a>
|
||||
</div>
|
||||
|
||||
<!-- 粉丝列表 -->
|
||||
<ul class="list-unstyled">
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">关注于 <i>2019-04-28 14:13:25</i></span>
|
||||
</h6>
|
||||
<div>
|
||||
<button type="button" class="btn btn-info btn-sm float-right follow-btn">关注TA</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 分页 -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item"><a class="page-link" href="#">首页</a></li>
|
||||
<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">4</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">5</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">下一页</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">末页</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
<script src="../js/profile.js"></script>
|
||||
</body>
|
||||
</html>
|
174
src/main/resources/templates/site/forget.html
Normal file
174
src/main/resources/templates/site/forget.html
Normal file
@ -0,0 +1,174 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<link rel="stylesheet" href="../css/login.css" />
|
||||
<title>牛客网-忘记密码</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container pl-5 pr-5 pt-3 pb-3 mt-3 mb-3">
|
||||
<form class="mt-5">
|
||||
<div class="form-group row">
|
||||
<label for="your-email" class="col-sm-2 col-form-label text-right">邮箱:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="email" class="form-control" id="your-email" placeholder="请输入您的邮箱!" required>
|
||||
<div class="invalid-feedback">
|
||||
该邮箱已被注册!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<label for="verifycode" class="col-sm-2 col-form-label text-right">验证码:</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" id="verifycode" placeholder="请输入验证码!">
|
||||
<div class="invalid-feedback">
|
||||
验证码不正确!
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<a href="javascript:;" class="btn btn-info form-control">获取验证码</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<label for="your-password" class="col-sm-2 col-form-label text-right">新密码:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" id="your-password" placeholder="请输入新的密码!" required>
|
||||
<div class="invalid-feedback">
|
||||
密码长度不能小于8位!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<div class="col-sm-2"></div>
|
||||
<div class="col-sm-10 text-center">
|
||||
<button type="submit" class="btn btn-info text-white form-control">重置密码</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
291
src/main/resources/templates/site/letter-detail.html
Normal file
291
src/main/resources/templates/site/letter-detail.html
Normal file
@ -0,0 +1,291 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<link rel="stylesheet" href="../css/letter.css" />
|
||||
<title>牛客网-私信详情</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<h6><b class="square"></b> 来自 <i class="text-success">落基山脉下的闲人</i> 的私信</h6>
|
||||
</div>
|
||||
<div class="col-4 text-right">
|
||||
<button type="button" class="btn btn-secondary btn-sm" onclick="location.href='letter.html';">返回</button>
|
||||
<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#sendModal">给TA私信</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 弹出框 -->
|
||||
<div class="modal fade" id="sendModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">发私信</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="recipient-name" class="col-form-label">发给:</label>
|
||||
<input type="text" class="form-control" id="recipient-name" value="落基山脉下的闲人">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="message-text" class="col-form-label">内容:</label>
|
||||
<textarea class="form-control" id="message-text" rows="10"></textarea>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
|
||||
<button type="button" class="btn btn-primary" id="sendBtn">发送</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 提示框 -->
|
||||
<div class="modal fade" id="hintModal" tabindex="-1" role="dialog" aria-labelledby="hintModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="hintModalLabel">提示</h5>
|
||||
</div>
|
||||
<div class="modal-body" id="hintBody">
|
||||
发送完毕!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 私信列表 -->
|
||||
<ul class="list-unstyled mt-4">
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">落基山脉下的闲人</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
君不见, 黄河之水天上来, 奔流到海不复回!
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">nowcoder</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
君不见, 高堂明镜悲白发, 朝如青丝暮成雪!
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">落基山脉下的闲人</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
人生得意须尽欢, 莫使金樽空对月!
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">nowcoder</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
天生我才必有用, 千金散尽还复来!
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">落基山脉下的闲人</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
岑夫子, 丹丘生, 将进酒, 杯莫停. 钟鼓馔玉不足贵, 但愿长醉不复醒!
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 分页 -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item"><a class="page-link" href="#">首页</a></li>
|
||||
<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">4</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">5</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">下一页</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">末页</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
<script src="../js/letter.js"></script>
|
||||
</body>
|
||||
</html>
|
389
src/main/resources/templates/site/letter.html
Normal file
389
src/main/resources/templates/site/letter.html
Normal file
@ -0,0 +1,389 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<link rel="stylesheet" href="../css/letter.css" />
|
||||
<title>牛客网-私信列表</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<div class="position-relative">
|
||||
<!-- 选项 -->
|
||||
<ul class="nav nav-tabs mb-3">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link position-relative active" href="letter.html">朋友私信<span class="badge badge-danger">3</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link position-relative" href="notice.html">系统通知<span class="badge badge-danger">27</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
<button type="button" class="btn btn-primary btn-sm position-absolute rt-0" data-toggle="modal" data-target="#sendModal">发私信</button>
|
||||
</div>
|
||||
<!-- 弹出框 -->
|
||||
<div class="modal fade" id="sendModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">发私信</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="recipient-name" class="col-form-label">发给:</label>
|
||||
<input type="text" class="form-control" id="recipient-name">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="message-text" class="col-form-label">内容:</label>
|
||||
<textarea class="form-control" id="message-text" rows="10"></textarea>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
|
||||
<button type="button" class="btn btn-primary" id="sendBtn">发送</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 提示框 -->
|
||||
<div class="modal fade" id="hintModal" tabindex="-1" role="dialog" aria-labelledby="hintModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="hintModalLabel">提示</h5>
|
||||
</div>
|
||||
<div class="modal-body" id="hintBody">
|
||||
发送完毕!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 私信列表 -->
|
||||
<ul class="list-unstyled">
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<a href="profile.html">
|
||||
<img src="http://images.nowcoder.com/head/8t.png" class="mr-4 rounded-circle user-header" alt="用户头像" >
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span class="text-success">落基山脉下的闲人</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="letter-detail.html">米粉车, 你来吧!</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><a href="#" class="text-primary">共5条会话</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 分页 -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item"><a class="page-link" href="#">首页</a></li>
|
||||
<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">4</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">5</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">下一页</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">末页</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
<script src="../js/letter.js"></script>
|
||||
</body>
|
||||
</html>
|
183
src/main/resources/templates/site/login.html
Normal file
183
src/main/resources/templates/site/login.html
Normal file
@ -0,0 +1,183 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<link rel="stylesheet" href="../css/login.css" />
|
||||
<title>牛客网-登录</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container pl-5 pr-5 pt-3 pb-3 mt-3 mb-3">
|
||||
<h3 class="text-center text-info border-bottom pb-3">登 录</h3>
|
||||
<form class="mt-5">
|
||||
<div class="form-group row">
|
||||
<label for="username" class="col-sm-2 col-form-label text-right">账号:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control is-invalid" id="username" placeholder="请输入您的账号!" required>
|
||||
<div class="invalid-feedback">
|
||||
该账号不存在!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<label for="password" class="col-sm-2 col-form-label text-right">密码:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control is-invalid" id="password" placeholder="请输入您的密码!" required>
|
||||
<div class="invalid-feedback">
|
||||
密码长度不能小于8位!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<label for="verifycode" class="col-sm-2 col-form-label text-right">验证码:</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control is-invalid" id="verifycode" placeholder="请输入验证码!">
|
||||
<div class="invalid-feedback">
|
||||
验证码不正确!
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<img src="../img/captcha.png" style="width:100px;height:40px;" class="mr-2"/>
|
||||
<a href="javascript:;" class="font-size-12 align-bottom">刷新验证码</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<div class="col-sm-2"></div>
|
||||
<div class="col-sm-10">
|
||||
<input type="checkbox" id="remember-me" checked="checked">
|
||||
<label class="form-check-label" for="remember-me">记住我</label>
|
||||
<a href="forget.html" class="text-danger float-right">忘记密码?</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<div class="col-sm-2"></div>
|
||||
<div class="col-sm-10 text-center">
|
||||
<button type="submit" class="btn btn-info text-white form-control">立即登录</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
250
src/main/resources/templates/site/my-post.html
Normal file
250
src/main/resources/templates/site/my-post.html
Normal file
@ -0,0 +1,250 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<title>牛客网-个人主页</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<!-- 选项 -->
|
||||
<div class="position-relative">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="profile.html">个人信息</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="my-post.html">我的帖子</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="my-reply.html">我的回复</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a href="profile.html" class="text-muted position-absolute rt-0">返回个人主页></a>
|
||||
</div>
|
||||
<!-- 我的帖子 -->
|
||||
<div class="mt-4">
|
||||
<h6><b class="square"></b> 发布的帖子(93)</h6>
|
||||
<ul class="list-unstyled mt-4 pl-3 pr-3">
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗?
|
||||
如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,春招的求职黄金时期已经来啦!!!
|
||||
再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。
|
||||
现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了,
|
||||
那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的?
|
||||
跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
赞 <i class="mr-3">11</i> 发布于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗?
|
||||
如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,春招的求职黄金时期已经来啦!!!
|
||||
再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。
|
||||
现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了,
|
||||
那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的?
|
||||
跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
赞 <i class="mr-3">11</i> 发布于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗?
|
||||
如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,春招的求职黄金时期已经来啦!!!
|
||||
再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。
|
||||
现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了,
|
||||
那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的?
|
||||
跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
赞 <i class="mr-3">11</i> 发布于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗?
|
||||
如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,春招的求职黄金时期已经来啦!!!
|
||||
再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。
|
||||
现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了,
|
||||
那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的?
|
||||
跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
赞 <i class="mr-3">11</i> 发布于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗?
|
||||
如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,春招的求职黄金时期已经来啦!!!
|
||||
再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。
|
||||
现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了,
|
||||
那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的?
|
||||
跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
赞 <i class="mr-3">11</i> 发布于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 分页 -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item"><a class="page-link" href="#">首页</a></li>
|
||||
<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">4</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">5</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">下一页</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">末页</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
280
src/main/resources/templates/site/my-reply.html
Normal file
280
src/main/resources/templates/site/my-reply.html
Normal file
@ -0,0 +1,280 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<title>牛客网-个人主页</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<!-- 选项 -->
|
||||
<div class="position-relative">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="profile.html">个人信息</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="my-post.html">我的帖子</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="my-reply.html">我的回复</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a href="profile.html" class="text-muted position-absolute rt-0">返回个人主页></a>
|
||||
</div>
|
||||
<!-- 我的回复 -->
|
||||
<div class="mt-4">
|
||||
<h6><b class="square"></b> 回复的帖子(379)</h6>
|
||||
<ul class="list-unstyled mt-4 pl-3 pr-3">
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
<li class="border-bottom pb-3 mt-4">
|
||||
<div class="font-size-16 text-info">
|
||||
<a href="#" class="text-info">备战春招,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</div>
|
||||
<div class="mt-1 font-size-14">
|
||||
顶顶顶!
|
||||
</div>
|
||||
<div class="text-right font-size-12 text-muted">
|
||||
回复于 <b>2019-04-15 10:10:10</b>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 分页 -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item"><a class="page-link" href="#">首页</a></li>
|
||||
<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">4</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">5</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">下一页</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">末页</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
238
src/main/resources/templates/site/notice-detail.html
Normal file
238
src/main/resources/templates/site/notice-detail.html
Normal file
@ -0,0 +1,238 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<link rel="stylesheet" href="../css/letter.css" />
|
||||
<title>牛客网-通知详情</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;height:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<h6><b class="square"></b> 系统通知</h6>
|
||||
</div>
|
||||
<div class="col-4 text-right">
|
||||
<button type="button" class="btn btn-secondary btn-sm" onclick="location.href='notice.html';">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 通知列表 -->
|
||||
<ul class="list-unstyled mt-4">
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<img src="http://static.nowcoder.com/images/head/notify.png" class="mr-4 rounded-circle user-header" alt="系统图标">
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">落基山脉下的闲人</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
<span>用户 <i>nowcoder</i> 评论了你的<b>帖子</b>, <a class="text-primary" href="#">点击查看</a> !</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<img src="http://static.nowcoder.com/images/head/notify.png" class="mr-4 rounded-circle user-header" alt="系统图标">
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">nowcoder</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
<span>用户 <i>nowcoder</i> 评论了你的<b>帖子</b>, <a class="text-primary" href="#">点击查看</a> !</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<img src="http://static.nowcoder.com/images/head/notify.png" class="mr-4 rounded-circle user-header" alt="系统图标">
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">落基山脉下的闲人</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
<span>用户 <i>nowcoder</i> 评论了你的<b>帖子</b>, <a class="text-primary" href="#">点击查看</a> !</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<img src="http://static.nowcoder.com/images/head/notify.png" class="mr-4 rounded-circle user-header" alt="系统图标">
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">nowcoder</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
<span>用户 <i>nowcoder</i> 评论了你的<b>帖子</b>, <a class="text-primary" href="#">点击查看</a> !</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-2">
|
||||
<img src="http://static.nowcoder.com/images/head/notify.png" class="mr-4 rounded-circle user-header" alt="系统图标">
|
||||
<div class="toast show d-lg-block" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header">
|
||||
<strong class="mr-auto">落基山脉下的闲人</strong>
|
||||
<small>2019-04-25 15:49:32</small>
|
||||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
<span>用户 <i>nowcoder</i> 评论了你的<b>帖子</b>, <a class="text-primary" href="#">点击查看</a> !</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 分页 -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item"><a class="page-link" href="#">首页</a></li>
|
||||
<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">4</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">5</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">下一页</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">末页</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
<script src="../js/letter.js"></script>
|
||||
</body>
|
||||
</html>
|
199
src/main/resources/templates/site/notice.html
Normal file
199
src/main/resources/templates/site/notice.html
Normal file
@ -0,0 +1,199 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<link rel="stylesheet" href="../css/letter.css" />
|
||||
<title>牛客网-通知</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<div class="position-relative">
|
||||
<!-- 选项 -->
|
||||
<ul class="nav nav-tabs mb-3">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link position-relative" href="letter.html">朋友私信<span class="badge badge-danger">3</span></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link position-relative active" href="notice.html">系统通知<span class="badge badge-danger">27</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- 通知列表 -->
|
||||
<ul class="list-unstyled">
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<img src="http://static.nowcoder.com/images/head/reply.png" class="mr-4 user-header" alt="通知图标">
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span>评论</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="notice-detail.html">用户 <i>nowcoder</i> 评论了你的<b>帖子</b> ...</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><span class="text-primary">共 <i>3</i> 条会话</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<img src="http://static.nowcoder.com/images/head/like.png" class="mr-4 user-header" alt="通知图标">
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span>赞</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="notice-detail.html">用户 <i>nowcoder</i> 点赞了你的<b>帖子</b> ...</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><span class="text-primary">共 <i>3</i> 条会话</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom position-relative">
|
||||
<span class="badge badge-danger">3</span>
|
||||
<img src="http://static.nowcoder.com/images/head/follow.png" class="mr-4 user-header" alt="通知图标">
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<span>关注</span>
|
||||
<span class="float-right text-muted font-size-12">2019-04-28 14:13:25</span>
|
||||
</h6>
|
||||
<div>
|
||||
<a href="notice-detail.html">用户 <i>nowcoder</i> 关注了你 ...</a>
|
||||
<ul class="d-inline font-size-12 float-right">
|
||||
<li class="d-inline ml-2"><span class="text-primary">共 <i>3</i> 条会话</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
153
src/main/resources/templates/site/operate-result.html
Normal file
153
src/main/resources/templates/site/operate-result.html
Normal file
@ -0,0 +1,153 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<title>牛客网-操作结果</title>
|
||||
</head>
|
||||
<body class="bg-white">
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container mt-5">
|
||||
<div class="jumbotron">
|
||||
<p class="lead">您的账号已经激活成功,可以正常使用了!</p>
|
||||
<hr class="my-4">
|
||||
<p>
|
||||
系统会在 <span id="seconds" class="text-danger">8</span> 秒后自动跳转,
|
||||
您也可以点此 <a id="target" href="login.html" class="text-primary">链接</a>, 手动跳转!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script>
|
||||
$(function(){
|
||||
setInterval(function(){
|
||||
var seconds = $("#seconds").text();
|
||||
$("#seconds").text(--seconds);
|
||||
if(seconds == 0) {
|
||||
location.href = $("#target").attr("href");
|
||||
}
|
||||
}, 1000);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
168
src/main/resources/templates/site/profile.html
Normal file
168
src/main/resources/templates/site/profile.html
Normal file
@ -0,0 +1,168 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<title>牛客网-个人主页</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<!-- 选项 -->
|
||||
<div class="position-relative">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="profile.html">个人信息</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="my-post.html">我的帖子</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="my-reply.html">我的回复</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- 个人信息 -->
|
||||
<div class="media mt-5">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="align-self-start mr-4 rounded-circle" alt="用户头像" style="width:50px;">
|
||||
<div class="media-body">
|
||||
<h5 class="mt-0 text-warning">
|
||||
<span>nowcoder</span>
|
||||
<button type="button" class="btn btn-info btn-sm float-right mr-5 follow-btn">关注TA</button>
|
||||
</h5>
|
||||
<div class="text-muted mt-3">
|
||||
<span>注册于 <i class="text-muted">2015-06-12 15:20:12</i></span>
|
||||
</div>
|
||||
<div class="text-muted mt-3 mb-5">
|
||||
<span>关注了 <a class="text-primary" href="followee.html">5</a> 人</span>
|
||||
<span class="ml-4">关注者 <a class="text-primary" href="follower.html">123</a> 人</span>
|
||||
<span class="ml-4">获得了 <i class="text-danger">87</i> 个赞</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
<script src="../js/profile.js"></script>
|
||||
</body>
|
||||
</html>
|
182
src/main/resources/templates/site/register.html
Normal file
182
src/main/resources/templates/site/register.html
Normal file
@ -0,0 +1,182 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<link rel="stylesheet" href="../css/login.css" />
|
||||
<title>牛客网-注册</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container pl-5 pr-5 pt-3 pb-3 mt-3 mb-3">
|
||||
<h3 class="text-center text-info border-bottom pb-3">注 册</h3>
|
||||
<form class="mt-5">
|
||||
<div class="form-group row">
|
||||
<label for="username" class="col-sm-2 col-form-label text-right">账号:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" id="username" placeholder="请输入您的账号!" required>
|
||||
<div class="invalid-feedback">
|
||||
该账号已存在!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<label for="password" class="col-sm-2 col-form-label text-right">密码:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" id="password" placeholder="请输入您的密码!" required>
|
||||
<div class="invalid-feedback">
|
||||
密码长度不能小于8位!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<label for="confirm-password" class="col-sm-2 col-form-label text-right">确认密码:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" id="confirm-password" placeholder="请再次输入密码!" required>
|
||||
<div class="invalid-feedback">
|
||||
两次输入的密码不一致!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="email" class="col-sm-2 col-form-label text-right">邮箱:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="email" class="form-control" id="email" placeholder="请输入您的邮箱!" required>
|
||||
<div class="invalid-feedback">
|
||||
该邮箱已注册!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<div class="col-sm-2"></div>
|
||||
<div class="col-sm-10 text-center">
|
||||
<button type="submit" class="btn btn-info text-white form-control">立即注册</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
<script src="../js/register.js"></script>
|
||||
</body>
|
||||
</html>
|
248
src/main/resources/templates/site/search.html
Normal file
248
src/main/resources/templates/site/search.html
Normal file
@ -0,0 +1,248 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<title>牛客网-搜索结果</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container">
|
||||
<h6><b class="square"></b> 相关帖子</h6>
|
||||
<!-- 帖子列表 -->
|
||||
<ul class="list-unstyled mt-4">
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="mr-4 rounded-circle" alt="用户头像">
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<a href="discuss-detail.html">备战<em>春招</em>,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</h6>
|
||||
<div class="mb-3">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗? 如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,<em>春招</em>的求职黄金时期已经来啦!!! 再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。 现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了, 那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的? 跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-muted font-size-12">
|
||||
<u class="mr-3">寒江雪</u> 发布于 <b>2019-04-15 15:32:18</b>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2">赞 11</li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2">回复 7</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="mr-4 rounded-circle" alt="用户头像">
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<a href="discuss-detail.html">备战<em>春招</em>,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</h6>
|
||||
<div class="mb-3">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗? 如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,<em>春招</em>的求职黄金时期已经来啦!!! 再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。 现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了, 那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的? 跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-muted font-size-12">
|
||||
<u class="mr-3">寒江雪</u> 发布于 <b>2019-04-15 15:32:18</b>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2">赞 11</li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2">回复 7</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="mr-4 rounded-circle" alt="用户头像">
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<a href="discuss-detail.html">备战<em>春招</em>,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</h6>
|
||||
<div class="mb-3">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗? 如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,<em>春招</em>的求职黄金时期已经来啦!!! 再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。 现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了, 那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的? 跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-muted font-size-12">
|
||||
<u class="mr-3">寒江雪</u> 发布于 <b>2019-04-15 15:32:18</b>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2">赞 11</li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2">回复 7</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="mr-4 rounded-circle" alt="用户头像">
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<a href="discuss-detail.html">备战<em>春招</em>,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</h6>
|
||||
<div class="mb-3">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗? 如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,<em>春招</em>的求职黄金时期已经来啦!!! 再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。 现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了, 那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的? 跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-muted font-size-12">
|
||||
<u class="mr-3">寒江雪</u> 发布于 <b>2019-04-15 15:32:18</b>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2">赞 11</li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2">回复 7</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media pb-3 pt-3 mb-3 border-bottom">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="mr-4 rounded-circle" alt="用户头像">
|
||||
<div class="media-body">
|
||||
<h6 class="mt-0 mb-3">
|
||||
<a href="discuss-detail.html">备战<em>春招</em>,面试刷题跟他复习,一个月全搞定!</a>
|
||||
</h6>
|
||||
<div class="mb-3">
|
||||
金三银四的金三已经到了,你还沉浸在过年的喜悦中吗? 如果是,那我要让你清醒一下了:目前大部分公司已经开启了内推,正式网申也将在3月份陆续开始,金三银四,<em>春招</em>的求职黄金时期已经来啦!!! 再不准备,作为19应届生的你可能就找不到工作了。。。作为20届实习生的你可能就找不到实习了。。。 现阶段时间紧,任务重,能做到短时间内快速提升的也就只有算法了, 那么算法要怎么复习?重点在哪里?常见笔试面试算法题型和解题思路以及最优代码是怎样的? 跟左程云老师学算法,不仅能解决以上所有问题,还能在短时间内得到最大程度的提升!!!
|
||||
</div>
|
||||
<div class="text-muted font-size-12">
|
||||
<u class="mr-3">寒江雪</u> 发布于 <b>2019-04-15 15:32:18</b>
|
||||
<ul class="d-inline float-right">
|
||||
<li class="d-inline ml-2">赞 11</li>
|
||||
<li class="d-inline ml-2">|</li>
|
||||
<li class="d-inline ml-2">回复 7</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 分页 -->
|
||||
<nav class="mt-5">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item"><a class="page-link" href="#">首页</a></li>
|
||||
<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">4</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">5</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">下一页</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">末页</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
</body>
|
||||
</html>
|
198
src/main/resources/templates/site/setting.html
Normal file
198
src/main/resources/templates/site/setting.html
Normal file
@ -0,0 +1,198 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="https://static.nowcoder.com/images/logo_87_87.png"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../css/global.css" />
|
||||
<link rel="stylesheet" href="../css/login.css" />
|
||||
<title>牛客网-账号设置</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="nk-container">
|
||||
<!-- 头部 -->
|
||||
<header class="bg-dark sticky-top">
|
||||
<div class="container">
|
||||
<!-- 导航 -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||
<!-- logo -->
|
||||
<a class="navbar-brand" href="#"></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<!-- 功能 -->
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="../index.html">首页</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link position-relative" href="letter.html">消息<span class="badge badge-danger">12</span></a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="register.html">注册</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical">
|
||||
<a class="nav-link" href="login.html">登录</a>
|
||||
</li>
|
||||
<li class="nav-item ml-3 btn-group-vertical dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<img src="http://images.nowcoder.com/head/1t.png" class="rounded-circle" style="width:30px;"/>
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item text-center" href="profile.html">个人主页</a>
|
||||
<a class="dropdown-item text-center" href="setting.html">账号设置</a>
|
||||
<a class="dropdown-item text-center" href="login.html">退出登录</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<span class="dropdown-item text-center text-secondary">nowcoder</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 搜索 -->
|
||||
<form class="form-inline my-2 my-lg-0" action="search.html">
|
||||
<input class="form-control mr-sm-2" type="search" aria-label="Search" />
|
||||
<button class="btn btn-outline-light my-2 my-sm-0" type="submit">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 内容 -->
|
||||
<div class="main">
|
||||
<div class="container p-5 mt-3 mb-3">
|
||||
<!-- 上传头像 -->
|
||||
<h6 class="text-left text-info border-bottom pb-2">上传头像</h6>
|
||||
<form class="mt-5">
|
||||
<div class="form-group row mt-4">
|
||||
<label for="head-image" class="col-sm-2 col-form-label text-right">选择头像:</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="custom-file">
|
||||
<input type="file" class="custom-file-input" id="head-image" lang="es" required="">
|
||||
<label class="custom-file-label" for="head-image" data-browse="文件">选择一张图片</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<div class="col-sm-2"></div>
|
||||
<div class="col-sm-10 text-center">
|
||||
<button type="submit" class="btn btn-info text-white form-control">立即上传</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<!-- 修改密码 -->
|
||||
<h6 class="text-left text-info border-bottom pb-2 mt-5">修改密码</h6>
|
||||
<form class="mt-5">
|
||||
<div class="form-group row mt-4">
|
||||
<label for="old-password" class="col-sm-2 col-form-label text-right">原密码:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" id="old-password" placeholder="请输入原始密码!" required>
|
||||
<div class="invalid-feedback">
|
||||
密码长度不能小于8位!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<label for="new-password" class="col-sm-2 col-form-label text-right">新密码:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" id="new-password" placeholder="请输入新的密码!" required>
|
||||
<div class="invalid-feedback">
|
||||
密码长度不能小于8位!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<label for="confirm-password" class="col-sm-2 col-form-label text-right">确认密码:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" id="confirm-password" placeholder="再次输入新密码!" required>
|
||||
<div class="invalid-feedback">
|
||||
两次输入的密码不一致!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row mt-4">
|
||||
<div class="col-sm-2"></div>
|
||||
<div class="col-sm-10 text-center">
|
||||
<button type="submit" class="btn btn-info text-white form-control">立即保存</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 尾部 -->
|
||||
<footer class="bg-dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- 二维码 -->
|
||||
<div class="col-4 qrcode">
|
||||
<img src="https://uploadfiles.nowcoder.com/app/app_download.png" class="img-thumbnail" style="width:136px;" />
|
||||
</div>
|
||||
<!-- 公司信息 -->
|
||||
<div class="col-8 detail-info">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">关于我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">加入我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">意见反馈</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">企业服务</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">联系我们</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">免责声明</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-light" href="#">友情链接</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="nav btn-group-vertical company-info">
|
||||
<li class="nav-item text-white-50">
|
||||
公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
联系方式:010-60728802(电话) admin@nowcoder.com
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
牛客科技©2018 All rights reserved
|
||||
</li>
|
||||
<li class="nav-item text-white-50">
|
||||
京ICP备14055008号-4
|
||||
<img src="http://static.nowcoder.com/company/images/res/ghs.png" style="width:18px;" />
|
||||
京公网安备 11010502036488号
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bs-custom-file-input/dist/bs-custom-file-input.js" crossorigin="anonymous"></script>
|
||||
<script src="../js/global.js"></script>
|
||||
<script>
|
||||
$(function(){
|
||||
bsCustomFileInput.init();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,17 @@
|
||||
package com.greate.community;
|
||||
|
||||
import com.greate.community.dao.DiscussPostMapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
|
||||
@SpringBootTest
|
||||
class CommunityApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user