();
36 |
37 | @Override
38 | public void init() throws ServletException {
39 | // 初始化阶段,读取new_words.txt
40 | // web工程中读取 文件,必须使用绝对磁盘路径
41 | String path = getServletContext().getRealPath("/WEB-INF/new_words.txt");
42 | try {
43 | BufferedReader reader = new BufferedReader(new FileReader(path));
44 | String line;
45 | while ((line = reader.readLine()) != null) {
46 | words.add(line);
47 | }
48 | reader.close();
49 | } catch (IOException e) {
50 | e.printStackTrace();
51 | }
52 | }
53 |
54 | public void doGet(HttpServletRequest request, HttpServletResponse response)
55 | throws ServletException, IOException {
56 | // 禁止缓存
57 | // response.setHeader("Cache-Control", "no-cache");
58 | // response.setHeader("Pragma", "no-cache");
59 | // response.setDateHeader("Expires", -1);
60 |
61 | int width = 120;
62 | int height = 30;
63 |
64 | // 步骤一 绘制一张内存中图片
65 | BufferedImage bufferedImage = new BufferedImage(width, height,
66 | BufferedImage.TYPE_INT_RGB);
67 |
68 | // 步骤二 图片绘制背景颜色 ---通过绘图对象
69 | Graphics graphics = bufferedImage.getGraphics();// 得到画图对象 --- 画笔
70 | // 绘制任何图形之前 都必须指定一个颜色
71 | graphics.setColor(getRandColor(200, 250));
72 | graphics.fillRect(0, 0, width, height);
73 |
74 | // 步骤三 绘制边框
75 | graphics.setColor(Color.WHITE);
76 | graphics.drawRect(0, 0, width - 1, height - 1);
77 |
78 | // 步骤四 四个随机数字
79 | Graphics2D graphics2d = (Graphics2D) graphics;
80 | // 设置输出字体
81 | graphics2d.setFont(new Font("宋体", Font.BOLD, 18));
82 |
83 | Random random = new Random();// 生成随机数
84 | int index = random.nextInt(words.size());
85 | String word = words.get(index);// 获得成语
86 |
87 | // 定义x坐标
88 | int x = 10;
89 | for (int i = 0; i < word.length(); i++) {
90 | // 随机颜色
91 | graphics2d.setColor(new Color(20 + random.nextInt(110), 20 + random
92 | .nextInt(110), 20 + random.nextInt(110)));
93 | // 旋转 -30 --- 30度
94 | int jiaodu = random.nextInt(60) - 30;
95 | // 换算弧度
96 | double theta = jiaodu * Math.PI / 180;
97 |
98 | // 获得字母数字
99 | char c = word.charAt(i);
100 |
101 | // 将c 输出到图片
102 | graphics2d.rotate(theta, x, 20);
103 | graphics2d.drawString(String.valueOf(c), x, 20);
104 | graphics2d.rotate(-theta, x, 20);
105 | x += 30;
106 | }
107 |
108 | // 将验证码内容保存session
109 | request.getSession().setAttribute("checkcode_session", word);
110 |
111 | // 步骤五 绘制干扰线
112 | graphics.setColor(getRandColor(160, 200));
113 | int x1;
114 | int x2;
115 | int y1;
116 | int y2;
117 | for (int i = 0; i < 30; i++) {
118 | x1 = random.nextInt(width);
119 | x2 = random.nextInt(12);
120 | y1 = random.nextInt(height);
121 | y2 = random.nextInt(12);
122 | graphics.drawLine(x1, y1, x1 + x2, x2 + y2);
123 | }
124 |
125 | // 将上面图片输出到浏览器 ImageIO
126 | graphics.dispose();// 释放资源
127 |
128 | //将图片写到response.getOutputStream()中
129 | ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
130 |
131 | }
132 |
133 | public void doPost(HttpServletRequest request, HttpServletResponse response)
134 | throws ServletException, IOException {
135 | doGet(request, response);
136 | }
137 |
138 | /**
139 | * 取其某一范围的color
140 | *
141 | * @param fc
142 | * int 范围参数1
143 | * @param bc
144 | * int 范围参数2
145 | * @return Color
146 | */
147 | private Color getRandColor(int fc, int bc) {
148 | // 取其随机颜色
149 | Random random = new Random();
150 | if (fc > 255) {
151 | fc = 255;
152 | }
153 | if (bc > 255) {
154 | bc = 255;
155 | }
156 | int r = fc + random.nextInt(bc - fc);
157 | int g = fc + random.nextInt(bc - fc);
158 | int b = fc + random.nextInt(bc - fc);
159 | return new Color(r, g, b);
160 | }
161 |
162 | }
163 |
164 | ```
165 |
166 | ## 登录示例
167 |
168 | ```java
169 |
170 |
171 |
172 |
173 | Insert title here
174 |
183 |
184 |
185 |
186 |
192 |
193 |
194 | ```
195 |
196 | ## 判断验证码输入是否正确
197 |
198 | ```java
199 | package top.canghe.CheckImgServlet;
200 |
201 | import java.io.IOException;
202 | import javax.servlet.ServletException;
203 | import javax.servlet.http.HttpServlet;
204 | import javax.servlet.http.HttpServletRequest;
205 | import javax.servlet.http.HttpServletResponse;
206 |
207 | public class DoChecking extends HttpServlet {
208 |
209 | public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
210 | //设置编码
211 | request.setCharacterEncoding("utf-8");
212 | //拿到表单提交的数据
213 | String username = request.getParameter("username");
214 | String password = request.getParameter("password");
215 | System.out.println(username);
216 | //拿到验证码
217 | String checkingWord = request.getParameter("checkingWord");
218 | //从session中拿到随机产生的验证码
219 | String word = (String)(request.getSession().getAttribute("checkcode_session"));
220 | System.out.println(checkingWord);
221 | System.out.println(word);
222 | //判断验证码输入是否正确
223 | if(checkingWord.equals(word)) {
224 | System.out.println("正确");
225 | response.sendRedirect("/WEB14/download.jsp");
226 | }else {
227 | System.out.println("不正确");
228 | response.sendRedirect("/WEB14/login.html");
229 | }
230 | }
231 |
232 | public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
233 | doGet(request, response);
234 | }
235 | }
236 |
237 | ```
238 |
239 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/为数据库批量添加测试数据/AddData.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/为数据库批量添加测试数据/AddData.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Class-Path:
3 |
4 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | web-demo-1
4 |
5 | index.html
6 | index.htm
7 | index.jsp
8 | default.html
9 | default.htm
10 | default.jsp
11 |
12 |
13 | LoginServlet
14 | com.canghe.web.servlet.user.LoginServlet
15 |
16 |
17 | LoginServlet
18 | /login
19 |
20 |
21 | LogoffServlet
22 | com.canghe.web.servlet.user.LogoffServlet
23 |
24 |
25 | LogoffServlet
26 | /logOff
27 |
28 |
29 | RegisterServlet
30 | com.canghe.web.servlet.user.RegisterServlet
31 |
32 |
33 | RegisterServlet
34 | /register
35 |
36 |
37 | ChangePasswordServlet
38 | com.canghe.web.servlet.user.ChangePasswordServlet
39 |
40 |
41 | ChangePasswordServlet
42 | /changePassword
43 |
44 |
45 | QueryServlet
46 | com.canghe.web.servlet.user.QueryServlet
47 |
48 |
49 | QueryServlet
50 | /query
51 |
52 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/css/style.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | *{padding:0; margin:0;}
3 |
4 | .login{
5 | width: 400px;
6 | margin: 50px auto;
7 | padding: 30px;
8 | }
9 |
10 | .login table tr:last-child td:last-child {
11 | color: red;
12 | }
13 |
14 | .welcome{
15 | height: 600px;
16 | background-color: #d1d1d1;
17 | text-align: center;
18 | line-height: 150px;
19 | }
20 | .info{
21 | margin: 10px;
22 | }
23 | .info legend{
24 | margin-left: 20px;
25 | }
26 |
27 | .list table{
28 | width: 100%;
29 | }
30 | .list table tr:first-child{
31 | background-color: yellow;
32 | font-weight: bold;
33 | }
34 | .list table tr{
35 | text-align: center;
36 | }
37 | .list table tr:last-child td:first-child{
38 | text-align: left;
39 | }
40 | .list table tr:last-child td:last-child{
41 | text-align: right;
42 | }
43 |
44 | .left{
45 | width: 200px;
46 | background-color: #00ffec;
47 | height: 600px;
48 | }
49 |
50 | .left ul li{
51 | line-height: 30px;
52 | text-indent: 30px;
53 | }
54 |
55 | .left ul li:hover{
56 | border-radius: 15px;
57 | background-color: orange;
58 | color: white;
59 | cursor: pointer;
60 | }
61 |
62 | .left ul li a:link{
63 | text-decoration: none;
64 | }
65 |
66 | .top{
67 | position: relative;
68 | line-height: 50px;
69 | background-color: #00ffec;
70 | }
71 |
72 | .top div:first-child {
73 | position: relative;
74 | left: 30px;
75 | }
76 | .top div:last-child {
77 | position: absolute;
78 | top: 0px;
79 | right: 30px;
80 | }
81 |
82 | .bottom{
83 | background-color: #00ffec;
84 | text-align: center;
85 | line-height: 50px;
86 | }
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/index.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8"
2 | pageEncoding="UTF-8"%>
3 |
4 |
5 |
6 |
7 | 首页
8 |
9 |
10 |
11 |
12 |
——————————欢迎您使用XXX系统——————————
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/js/page.js:
--------------------------------------------------------------------------------
1 | /* 声明变量 */
2 | var curr, //当前页
3 | total, //总页数
4 | size; //页面大小
5 |
6 | /* 分页js */
7 | $("[value='首页']").bind("click", function() {
8 | // location = webroot + "/query?currPage=1";
9 | queryByPage(1);
10 | });
11 | $("[value='上一页']").bind("click", function() {
12 | // location = webroot + "/query?currPage="+(curr-1);
13 | queryByPage(curr-1);
14 | });
15 | $("[value='下一页']").bind("click", function() {
16 | // location = webroot + "/query?currPage="+(curr+1);
17 | queryByPage(curr+1);
18 | });
19 | $("[value='尾页']").bind("click", function() {
20 | // location = webroot + "/query?currPage="+total;
21 | queryByPage(total);
22 | });
23 | $(".list table tr:last select:last").bind("change", function() {
24 | //读取当前页
25 | curr = $(".list table tr:last select:last option:selected").val();
26 | //跳转
27 | // location = webroot + "/query?currPage="+curr;
28 | queryByPage(curr);
29 | });
30 | $(".list table tr:last select:first").bind("change", function() {
31 | //读取当前页
32 | // curr = $(".list table tr:last select:last option:selected").val();
33 | //读取页面大小
34 | size = $(".list table tr:last select:first option:selected").val();
35 | //跳转
36 | // location = webroot + "/query?currPage="+curr + "&pageSize=" + size;
37 | queryByPage(curr, size);
38 | });
39 |
40 | /* 分页函数 */
41 | function queryByPage(target, pageSize) {
42 |
43 | //判断, target 和 size 是否为null
44 | if(!target){
45 | target = curr;
46 | }
47 | if(!pageSize){
48 | pageSize = size;
49 | }
50 | //跳转
51 | location = webroot + "/query?currPage="+target + "&pageSize=" + pageSize;
52 | }
53 |
54 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/js/project.js:
--------------------------------------------------------------------------------
1 | //工程根目录变量
2 | var webroot;
3 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/js/registe.js:
--------------------------------------------------------------------------------
1 | //为注册按钮添加单击事件
2 | $("[value='注册']").bind("click", function(){
3 | //跳转到注册页
4 | location = webroot+"/page/user/registe.jsp";
5 | });
6 | //为取消按钮添加单击事件
7 | $("[value='取消']").bind("click", function(){
8 | //alert(webroot);
9 | //跳转到注册页
10 | location = webroot+"/login.jsp";
11 | });
12 | //$("[value='提交']").bind("click", function(){
13 | // //确认提交吗
14 | // var question=confirm("确认日胶吗?");
15 | // //跳转到注册页
16 | // if(question){
17 | // location = webroot+"/changePassword";
18 | // }
19 | //
20 | //});
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/login.jsp:
--------------------------------------------------------------------------------
1 | <%@page language="java" contentType="text/html; charset=utf-8" %>
2 | <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3 |
4 |
5 |
6 |
7 | 登录页
8 |
9 |
10 |
11 |
12 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
48 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/page/bottom.jsp:
--------------------------------------------------------------------------------
1 | <%@page language="java" contentType="text/html; charset=utf-8" %>
2 |
3 |
4 |
5 |
6 | 示例
7 |
8 |
9 |
10 |
11 |
12 | ©版权所有 JT35 2019 - 1 - 16
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/page/index.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8"
2 | pageEncoding="UTF-8"%>
3 |
4 |
5 |
6 |
7 | 首页
8 |
9 |
10 |
11 |
12 |
————欢迎您使用XXX系统————
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/page/left.jsp:
--------------------------------------------------------------------------------
1 | <%@page language="java" contentType="text/html; charset=utf-8" %>
2 |
3 |
4 |
5 |
6 | 示例
7 |
8 |
9 |
10 |
11 |
12 |
13 | -
14 |
15 | 个人中心
17 |
18 | -
19 | 修改密码
21 |
22 | -
23 | 用户查询
25 |
26 | -
27 | 退出
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/page/main.jsp:
--------------------------------------------------------------------------------
1 | <%@page language="java" contentType="text/html; charset=utf-8" %>
2 |
3 |
4 |
5 |
6 | 主页
7 |
8 |
9 |
10 |
17 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/page/top.jsp:
--------------------------------------------------------------------------------
1 | <%@page language="java" contentType="text/html; charset=utf-8" %>
2 |
3 |
4 |
5 |
6 | 示例
7 |
8 |
9 |
10 |
11 |
12 |
欢迎您用户${loginInfo.userName }
13 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/page/user/changePassword.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8"
2 | pageEncoding="UTF-8"%>
3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
4 |
5 |
6 |
7 |
8 | 修改密码
9 |
10 |
11 |
42 |
43 |
44 |
45 |
46 |
49 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/page/user/info.jsp:
--------------------------------------------------------------------------------
1 | <%@page language="java" contentType="text/html; charset=utf-8" %>
2 |
3 |
4 |
5 |
6 | 个人中心
7 |
8 |
9 |
10 |
11 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
46 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/page/user/list.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8"
2 | pageEncoding="UTF-8"%>
3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
4 |
5 |
6 |
7 |
8 | 所有用户查询
9 |
10 |
11 |
12 |
71 |
72 |
73 |
74 |
75 |
82 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/WebContent/page/user/registe.jsp:
--------------------------------------------------------------------------------
1 | <%@page language="java" contentType="text/html; charset=utf-8" %>
2 |
3 |
4 |
5 |
6 | 注册页
7 |
8 |
9 |
10 |
11 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
54 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/build/classes/c3p0-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | com.mysql.jdbc.Driver
5 | jdbc:mysql://106.13.43.205:3306/jt35
6 | root
7 | aaaaa123
8 |
9 |
10 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/build/classes/sql/data.sql:
--------------------------------------------------------------------------------
1 |
2 | DROP DATABASE IF EXISTS jt35;
3 | CREATE DATABASE jt35 DEFAULT CHARACTER SET utf8;
4 | USE jt35;
5 |
6 | DROP TABLE IF EXISTS t_user;
7 | CREATE TABLE USER(
8 | id INT PRIMARY KEY AUTO_INCREMENT,
9 | userName VARCHAR(40) NOT NULL UNIQUE,
10 | PASSWORD VARCHAR(50) NOT NULL,
11 | gender TINYINT,
12 | registeTime DATETIME NOT NULL
13 | );
14 |
15 | INSERT INTO USER VALUES(1001, 'admin', '9999', 1, '1990-5-30');
16 | INSERT INTO USER(username, PASSWORD, gender, registeTime)
17 | VALUES('apple', '9999', 0, '1990-6-30');
18 | INSERT INTO USER(username, PASSWORD, gender, registeTime)
19 | VALUES('cherry', '9999', 0, '1990-7-30');
20 | INSERT INTO USER(username, PASSWORD, gender, registeTime)
21 | VALUES('peach', '9999', 2, '1990-8-30');
22 |
23 | /*
24 | select * from user order by id;
25 |
26 | */
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/c3p0-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | com.mysql.jdbc.Driver
5 | jdbc:mysql://106.13.43.205:3306/jt35
6 | root
7 | aaaaa123
8 |
9 |
10 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/dao/UserDaoImpl.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/dao/UserDaoImpl.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/domain/User.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/domain/User.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/test/AddDate.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/test/AddDate.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/util/AddData.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/util/AddData.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/util/DataSourceUtils.java:
--------------------------------------------------------------------------------
1 | package com.canghe.util;
2 |
3 | import java.sql.Connection;
4 | import java.sql.ResultSet;
5 | import java.sql.SQLException;
6 | import java.sql.Statement;
7 |
8 | import javax.sql.DataSource;
9 |
10 | import com.mchange.v2.c3p0.ComboPooledDataSource;
11 |
12 | public class DataSourceUtils {
13 |
14 | private static DataSource dataSource = new ComboPooledDataSource();
15 |
16 | private static ThreadLocal tl = new ThreadLocal();
17 |
18 | // 鐩存帴鍙互鑾峰彇涓�涓繛鎺ユ睜
19 | public static DataSource getDataSource() {
20 | return dataSource;
21 | }
22 |
23 | // 鑾峰彇杩炴帴瀵硅薄
24 | public static Connection getConnection() throws SQLException {
25 |
26 | Connection con = tl.get();
27 | if (con == null) {
28 | con = dataSource.getConnection();
29 | tl.set(con);
30 | }
31 | return con;
32 | }
33 |
34 | // 寮�鍚簨鍔�
35 | public static void startTransaction() throws SQLException {
36 | Connection con = getConnection();
37 | if (con != null) {
38 | con.setAutoCommit(false);
39 | }
40 | }
41 |
42 | // 浜嬪姟鍥炴粴
43 | public static void rollback() throws SQLException {
44 | Connection con = getConnection();
45 | if (con != null) {
46 | con.rollback();
47 | }
48 | }
49 |
50 | // 鎻愪氦骞朵笖 鍏抽棴璧勬簮鍙婁粠ThreadLocall涓噴鏀�
51 | public static void commitAndRelease() throws SQLException {
52 | Connection con = getConnection();
53 | if (con != null) {
54 | con.commit(); // 浜嬪姟鎻愪氦
55 | con.close();// 鍏抽棴璧勬簮
56 | tl.remove();// 浠庣嚎绋嬬粦瀹氫腑绉婚櫎
57 | }
58 | }
59 |
60 | // 鍏抽棴璧勬簮鏂规硶
61 | public static void closeConnection() throws SQLException {
62 | Connection con = getConnection();
63 | if (con != null) {
64 | con.close();
65 | }
66 | }
67 |
68 | public static void closeStatement(Statement st) throws SQLException {
69 | if (st != null) {
70 | st.close();
71 | }
72 | }
73 |
74 | public static void closeResultSet(ResultSet rs) throws SQLException {
75 | if (rs != null) {
76 | rs.close();
77 | }
78 | }
79 |
80 | }
81 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/util/PageAssitant.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/util/PageAssitant.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/ChangePasswordServlet.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/ChangePasswordServlet.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/LoginServlet.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/LoginServlet.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/LogoffServlet.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/LogoffServlet.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/QueryServlet.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/QueryServlet.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/RegisterServlet.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/分页查询/web-demo-1/src/com/canghe/web/servlet/user/RegisterServlet.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/分页查询/web-demo-1/src/sql/data.sql:
--------------------------------------------------------------------------------
1 |
2 | DROP DATABASE IF EXISTS jt35;
3 | CREATE DATABASE jt35 DEFAULT CHARACTER SET utf8;
4 | USE jt35;
5 |
6 | DROP TABLE IF EXISTS t_user;
7 | CREATE TABLE USER(
8 | id INT PRIMARY KEY AUTO_INCREMENT,
9 | userName VARCHAR(40) NOT NULL UNIQUE,
10 | PASSWORD VARCHAR(50) NOT NULL,
11 | gender TINYINT,
12 | registeTime DATETIME NOT NULL
13 | );
14 |
15 | INSERT INTO USER VALUES(1001, 'admin', '9999', 1, '1990-5-30');
16 | INSERT INTO USER(username, PASSWORD, gender, registeTime)
17 | VALUES('apple', '9999', 0, '1990-6-30');
18 | INSERT INTO USER(username, PASSWORD, gender, registeTime)
19 | VALUES('cherry', '9999', 0, '1990-7-30');
20 | INSERT INTO USER(username, PASSWORD, gender, registeTime)
21 | VALUES('peach', '9999', 2, '1990-8-30');
22 |
23 | /*
24 | select * from user order by id;
25 |
26 | */
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/docs/常用功能模块代码/利用cookie获取最近一次访问页面时间/LastCookieTimeServlet.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用功能模块代码/利用cookie获取最近一次访问页面时间/LastCookieTimeServlet.java
--------------------------------------------------------------------------------
/docs/常用功能模块代码/防盗链/RefererServlet.java:
--------------------------------------------------------------------------------
1 | package com.ithiema.header;
2 |
3 | import java.io.IOException;
4 | import javax.servlet.ServletException;
5 | import javax.servlet.http.HttpServlet;
6 | import javax.servlet.http.HttpServletRequest;
7 | import javax.servlet.http.HttpServletResponse;
8 |
9 | public class RefererServlet extends HttpServlet {
10 |
11 | protected void doGet(HttpServletRequest request, HttpServletResponse response)
12 | throws ServletException, IOException {
13 |
14 | //对该新闻的来源的进行判断
15 | String header = request.getHeader("referer");
16 | if(header!=null&&header.startsWith("http://localhost")){
17 | //是从我自己的网站跳转过来的 可以看新闻
18 | response.setContentType("text/html;charset=UTF-8");
19 | response.getWriter().write("中国确实已经拿到100块金牌....");
20 | }else{
21 | response.getWriter().write("你是盗链者,可耻!!");
22 | }
23 |
24 |
25 | }
26 |
27 | protected void doPost(HttpServletRequest request, HttpServletResponse response)
28 | throws ServletException, IOException {
29 | doGet(request, response);
30 | }
31 | }
--------------------------------------------------------------------------------
/docs/常用工具和环境/Git&GitHub/Git&GitHub.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用工具和环境/Git&GitHub/Git&GitHub.pdf
--------------------------------------------------------------------------------
/docs/常用工具和环境/Git&GitHub/关于GitHub的一些经验总结(包括README文件的编写目录的自动生成).md:
--------------------------------------------------------------------------------
1 | ## 一、README.md上传图片
2 | 需要注意的是一定要图片先上传到图床,我这边用的有两个
3 | 1、[图床](https://imgchr.com/)
4 | 2、[七牛云](https://www.qiniu.com/)
5 | 关于七牛云我会出另外一篇文章细说
6 | 注意:不管是截图的图片还是本地上传的图片都要上传到图床上,,然后复制URL才可以在GitHub中显示
7 |
8 | ## 二、README.md自动生成目录
9 | 不能用Markdown的【TCG】自动生成目录,在GitHub上是不显示的
10 | 我的办法是:
11 | 1、[点开网站](https://sleepeatcode.com/ghtoc)
12 | 2、将GitHub的README.md的URL复制,自动生成目录,但是这是不全的
13 | 3、复制目录到README.md文件,需要在后面的括号处加上#文件名,这个是我能找到的比较简单的办法了,比手动敲简单
14 | 
15 | 特别注意:#后面不要加任何特殊字符和数字,目录不要编号,否则不成功,内部跳转不成功的很大部分原因也是因为内部编号了。
16 |
17 | ## >三、我的GitHub
18 | https://github.com/freestylefly/javaStudy#ajax
19 | 期待你的加入!,有什么不懂的可以在GitHub上留言问我。
20 |
21 |
--------------------------------------------------------------------------------
/docs/常用工具和环境/Git&GitHub/分布式版本控制工具——Git.md:
--------------------------------------------------------------------------------
1 |
2 | ## 目录
3 | - [一、写在前面](#一写在前面)
4 | - [二、Git的优势](#二git的优势)
5 | - [三、Git的基本结构](#三git的基本结构)
6 | - [四、本地库和远程库](#四本地库和远程库)
7 | - [五、本地库初始化](#五本地库初始化)
8 | - [六、设置签名](#六设置签名)
9 | - [七、常用命令](#七常用命令)
10 | - [八、历史记录](#八历史记录)
11 | - [九、版本前进后退](#九版本前进后退)
12 |
13 |
14 | ## 一、写在前面
15 |
16 | Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。发明人就是大名鼎鼎的Linus ,发明初衷为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。需要知道的是Git底层文件验证采用的是SHA-1,(SHA-1)哈希算法可以被用来验证文件。哈希算法有如下特点:
17 | 1、不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定
18 | 2、哈希算法确定,输入数据确定,输出数据能够保证不变
19 | 3、哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
20 | 4、哈希算法不可逆
21 | ## 二、Git的优势
22 |
23 | 1. 大部分在本地完成,不用联网
24 | 2. 完整性保证
25 | 3. 尽可能添加数据而不是删除和修改数据
26 | 4. 分支操作非常快速刘闯
27 | 5. 和Linux命令全面兼容
28 | ## 三、Git的基本结构
29 | 工作区:写代码的地方
30 | 暂存区:Git临时存储的地方
31 | 本地库:Git存放的历史版本
32 | ## 四、本地库和远程库
33 | 局域网:GitLab
34 | 外网:GitHub、码云
35 | 1、团队内部协作:
36 | push:本地库提交到远程库
37 | pull:拉取远程库代码到本地库,包括两个操作fetch(拉取)+merge(合并)拉取并合并,就是将远程库的代码更新到本地库
38 | clone:将远程库所有东西下载到本地,并且建立本地库
39 | 2、跨团队协作
40 | 如需要在被人的GitHub仓库提交自己的修改,跨团队协作
41 | fork:复制一份别人的代码在自己的远程库
42 | pull request:拉取请求,发送自己的修改
43 | merge:合并保存
44 | ## 五、本地库初始化
45 | ”命令:git init
46 | 注意:.git目录不能删除
47 | ## 六、设置签名
48 | 1、作用:在你提交代码的时候作为一个标识,代表这是你提交的代码,这里的签名和远程库上面的账号和密码没有任何关系
49 | 2、命令
50 | ```java
51 | 命令
52 | git comfig user.name 你的签名
53 | git config user.email 你的邮箱
54 |
55 | ```
56 | 3、注意:签名分两种:
57 | 项目级别:也叫仓库级别,仅在当前本地库范围内有效,git gonfig命令
58 | 系统级别:当前操作系统的用户有效,git config --global
59 | **优先级:就近原则
60 | 4、查看签名
61 |
62 | ```java
63 | 仓库级别:
64 | cat .git/config
65 | 系统级别:
66 | cat `/.gitconfig
67 | ```
68 | ## 七、常用命令
69 |
70 | ```java
71 | git status:查看工作区、暂存区状态
72 | git add 文件名:添加文件到暂存区
73 | git add *:添加所有文件到暂存区
74 | git rm --cached 文件名:将暂存区恢复到工作区
75 | git commit -m"提交日志" 文件名:提交文件到本地库
76 | git commit -a -m"提交日志" :添加所有文件到本地库
77 |
78 | ```
79 | ## 八、历史记录
80 | 1、查看历史记录
81 | git log
82 | git reflog 简洁的查看历史记录,HEAD值简单化
83 | 2、多层显示控制方式
84 | 空格向下切换
85 | b向上翻页
86 | q退出
87 | ## 九、版本前进后退
88 | 1、基于索引值操作
89 | git reset --hard 索引值
90 | git help 具体命令:查看帮助
91 |
92 | 2、reset命令的三个参数对比
93 | --sert:仅仅在本地库移动HEAD指针
94 | --mixed:从本地库移动指针,重置暂存区
95 | --hard:本地库移动指针,重置暂存区,重置工作区
96 | ## 十、删除后找回
97 | 一定要明确一点就是,你从本地库或者工作区删除了文件,一定要将删除的操作add和commit 到本地库才可以找回相关文件。
98 | git reset--hard 指针位置
99 | ## 十一、比较文件差异
100 | git diff:工作区和暂存区比较
101 | git diff HEAD 文件名:本地库和历史版本比较,不带文件名是比较多个文件
102 | ## 十二、git的分支
103 | 1、什么是分支
104 | 版本控制中, 使用多条分支同时推进多个任务
105 | 2、查看所有分支
106 | git branch -v
107 | 3、创建分支
108 | git branch 分支名
109 | 4、切换分支
110 | gitcheckout 分支名
111 | 5、合并分支
112 | 第一步L切换到被合并分支
113 | 第二步:执行git merge 分支名
114 | 6、解决分支冲突
115 | 删掉相关标记
116 | git add 文件名:标记为已解决
117 | git commit -m“”“”:提交解决冲突
118 | 注意:提交的时候不能带文件名
119 | ## 十三、GitHub
120 | 1、给远程库URL新建别名
121 | git remote add 别名 远程仓库URL
122 | 2、查看远程仓库地址别名
123 | git remote -v
124 | 3、推送到远程库
125 | git push 别名 分支名
126 | 4、克隆远程仓库内容到本地
127 | git clone 远程地址别名
128 | 注意:克隆会晚会智能的把远程库下载到本地,创建origin远程地址的别名,并且会初始化本地库
129 | 5、抓取:将远程分支放到本地
130 | git fetch 别名 分支名
131 | 6、合并
132 | 将远程分支合并到本地库
133 | git merge 悲鸣/分支名
134 | 7、抓取并合并
135 | git pull 别名 分支名
136 | ## 十四、ssh免密登录和eclipse下的git操作
137 | 这个可以直接访问仓库,对应资源可以下载
138 | https://github.com/freestylefly/javaStudy/tree/master/Git%26GitHub
139 | ## 十五、写在最后
140 | 如果有想要学习资源的话欢迎评论咨询!
141 |
142 |
143 |
--------------------------------------------------------------------------------
/docs/常用工具和环境/InteliJ_IDEA/idea下新建的spring boot项目,无法导入依赖以及idea基础回顾.md:
--------------------------------------------------------------------------------
1 | # 一、问题描述
2 | 最近在idea中导入spring boot项目的依赖时,无论怎么也无法导入依赖,如图所示:
3 | 
4 | 总是显示:Project 'org.springframework.boot:spring-boot-starter-parent:1.5.9.RELEASE' not found
5 | 一开始以为是maven配置的不对,重新修改配置还是不对
6 | # 二、问题解决
7 | 原来是因为每次用idea新建项目, 二进制版本都是1.5或1.6。只需要修改settings——build Execution Deploment——Compler——java Compler里面修改,如图:
8 | 
9 | 修改成JDK1.8即可,刚开始默认是1.5的,也不知道为啥1.5就不能自动导入项目需要的依赖。反正问题就解决了。
10 | 
11 | # 三、补充idea基础
12 | ## 1、进入settings,目录结构
13 | 
14 |
15 | ## 2、设置主题
16 | 
17 | 这里默认提供了三套主题:IntelliJ,Darcula,Windows。这里可以根据自己的喜好进行选择。
18 | ## 3、设置窗体及菜单的字体及字体大小
19 | 
20 | ## 4、Ctrl + 鼠标滚轮 快捷键来控制代码字体大小显示
21 | 
22 | ## 5、设置鼠标悬浮提示
23 | 
24 | ## 6、设置自动导包功能
25 | 
26 | Add unambiguous imports on the fly:自动导入不明确的结构
27 | Optimize imports on the fly:自动帮我们优化导入的包#
28 | ## 7、设置显示行号和方法间的分隔符
29 | 
30 | 如上图红圈所示,可以勾选 Show line numbers:显示行数。我建议一般这个要勾选上
31 | 如上图红圈所示,可以勾选 Show method separators: 显示方法分隔线。这种线有助于我们区分开方法,所以建议勾选上
32 |
33 | ## 8、忽略大小写提示
34 | 
35 | ## 9、设置取消单行显示 tabs 的操作
36 |
37 | 
38 |
39 | ## 10、设置默认的字体、字体大小、字体行间距
40 | 
41 | ## 11、修改类头的文档注释信息
42 | 
43 | 
44 |
45 | ## 12、设置项目文件编码
46 | 
47 | # 四、关于我
48 | ------
49 | # 本文章已同步至我的GitHub仓库:Javastudy,期待您的加入:blush:
50 |
51 |
52 | # 本文章已同步至苍何的个人博客,可以直接在博客上留言哦:blush:
53 |
54 |
55 | # 来我的微信公众号玩耍呗:blush:
56 |
57 |
58 | # 扫码无套路关注我的CSDN博客:blush:
59 |
--------------------------------------------------------------------------------
/docs/常用工具和环境/InteliJ_IDEA/settings.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用工具和环境/InteliJ_IDEA/settings.jar
--------------------------------------------------------------------------------
/docs/常用工具和环境/InteliJ_IDEA/尚硅谷_宋红康_IntelliJIDEA的安装、配置与使用.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用工具和环境/InteliJ_IDEA/尚硅谷_宋红康_IntelliJIDEA的安装、配置与使用.pdf
--------------------------------------------------------------------------------
/docs/常用工具和环境/InteliJ_IDEA/激活码.txt:
--------------------------------------------------------------------------------
1 | T3ACKYHDVF-eyJsaWNlbnNlSWQiOiJUM0FDS1lIRFZGIiwibGljZW5zZWVOYW1lIjoi5bCP6bifIOeoi+W6j+WRmCIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJlbnRVc2UiOmZhbHNlLCJwcm9kdWN0cyI6W3siY29kZSI6IklJIiwiZmFsbGJhY2tEYXRlIjoiMjAxOS0wNi0xMyIsInBhaWRVcFRvIjoiMjAyMC0wNi0xMiJ9LHsiY29kZSI6IkFDIiwiZmFsbGJhY2tEYXRlIjoiMjAxOS0wNi0xMyIsInBhaWRVcFRvIjoiMjAyMC0wNi0xMiJ9LHsiY29kZSI6IkRQTiIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMTMiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMTIifSx7ImNvZGUiOiJQUyIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMTMiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMTIifSx7ImNvZGUiOiJHTyIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMTMiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMTIifSx7ImNvZGUiOiJETSIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMTMiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMTIifSx7ImNvZGUiOiJDTCIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMTMiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMTIifSx7ImNvZGUiOiJSUzAiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTEzIiwicGFpZFVwVG8iOiIyMDIwLTA2LTEyIn0seyJjb2RlIjoiUkMiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTEzIiwicGFpZFVwVG8iOiIyMDIwLTA2LTEyIn0seyJjb2RlIjoiUkQiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTEzIiwicGFpZFVwVG8iOiIyMDIwLTA2LTEyIn0seyJjb2RlIjoiUEMiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTEzIiwicGFpZFVwVG8iOiIyMDIwLTA2LTEyIn0seyJjb2RlIjoiUk0iLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTEzIiwicGFpZFVwVG8iOiIyMDIwLTA2LTEyIn0seyJjb2RlIjoiV1MiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTEzIiwicGFpZFVwVG8iOiIyMDIwLTA2LTEyIn0seyJjb2RlIjoiREIiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTEzIiwicGFpZFVwVG8iOiIyMDIwLTA2LTEyIn0seyJjb2RlIjoiREMiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTEzIiwicGFpZFVwVG8iOiIyMDIwLTA2LTEyIn0seyJjb2RlIjoiUlNVIiwiZmFsbGJhY2tEYXRlIjoiMjAxOS0wNi0xMyIsInBhaWRVcFRvIjoiMjAyMC0wNi0xMiJ9XSwiaGFzaCI6IjEzMzgwMDA0LzAiLCJncmFjZVBlcmlvZERheXMiOjcsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-nTBuZDiAOuM4IHXNkS7GbCvZVZFo4EcHf9hHzfhaPYsaCGQjuCVJFEboopbPuEHn16yT9Zvf7yRuM5WGlGmpcOJnWLpCmGm65S6wHtZdX0kfSNIqnqdS1MhIHpftsAGxSswuQksrm09tltbO4nATeavGs1BIMafsCJVen+BvDFvYL7+3crkRI7AwdyMb2miLLYJcEVPhiVKZnzJUzT9uA8/4Q02BqsvX5oSJg8cLw3w7Cd0ISrn1i8uENe/1z3T/Ede0STM7eOekFaVEdO9cgzYME3iIFzi2TZXMSqIuBpJqF4NFb6M0039tEGy6EHqcksMyDTdCAASquqcDcHrUUA==-MIIElTCCAn2gAwIBAgIBCTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE4MTEwMTEyMjk0NloXDTIwMTEwMjEyMjk0NlowaDELMAkGA1UEBhMCQ1oxDjAMBgNVBAgMBU51c2xlMQ8wDQYDVQQHDAZQcmFndWUxGTAXBgNVBAoMEEpldEJyYWlucyBzLnIuby4xHTAbBgNVBAMMFHByb2QzeS1mcm9tLTIwMTgxMTAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQAF8uc+YJOHHwOFcPzmbjcxNDuGoOUIP+2h1R75Lecswb7ru2LWWSUMtXVKQzChLNPn/72W0k+oI056tgiwuG7M49LXp4zQVlQnFmWU1wwGvVhq5R63Rpjx1zjGUhcXgayu7+9zMUW596Lbomsg8qVve6euqsrFicYkIIuUu4zYPndJwfe0YkS5nY72SHnNdbPhEnN8wcB2Kz+OIG0lih3yz5EqFhld03bGp222ZQCIghCTVL6QBNadGsiN/lWLl4JdR3lJkZzlpFdiHijoVRdWeSWqM4y0t23c92HXKrgppoSV18XMxrWVdoSM3nuMHwxGhFyde05OdDtLpCv+jlWf5REAHHA201pAU6bJSZINyHDUTB+Beo28rRXSwSh3OUIvYwKNVeoBY+KwOJ7WnuTCUq1meE6GkKc4D/cXmgpOyW/1SmBz3XjVIi/zprZ0zf3qH5mkphtg6ksjKgKjmx1cXfZAAX6wcDBNaCL+Ortep1Dh8xDUbqbBVNBL4jbiL3i3xsfNiyJgaZ5sX7i8tmStEpLbPwvHcByuf59qJhV/bZOl8KqJBETCDJcY6O2aqhTUy+9x93ThKs1GKrRPePrWPluud7ttlgtRveit/pcBrnQcXOl1rHq7ByB8CFAxNotRUYL9IF5n3wJOgkPojMy6jetQA5Ogc8Sm7RG6vg1yow==
--------------------------------------------------------------------------------
/docs/常用工具和环境/Linux/Linux命令大全(修改版).chm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用工具和环境/Linux/Linux命令大全(修改版).chm
--------------------------------------------------------------------------------
/docs/常用工具和环境/Linux/day21--linux入门.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用工具和环境/Linux/day21--linux入门.pdf
--------------------------------------------------------------------------------
/docs/常用工具和环境/Linux/操作系统的作用.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/常用工具和环境/Linux/操作系统的作用.png
--------------------------------------------------------------------------------
/docs/常用工具和环境/eclipse/Eclipse调用方法放回值快捷键.md:
--------------------------------------------------------------------------------
1 | 有时候条用某个方法,知道返回值类型,需要用变量接收的时候,要手动去创建变量很麻烦,比如:
2 | 
3 | 当调用getServletContext方法我们鼠标放在方法上可以显示返回值是:ServletContext ,这个时候怎么样快速用一个饮用型变量接收呢?
4 | 方法很简单
5 |
6 | 在";"分号后面按住Ctrl+1,选择第一个即可有变量类型以及自动取好名字:
7 | 
8 |
9 | 
10 | 还可以对变量名选择,一般情况变量名和变量类型一致,只是首字母不要大写即可
11 | ,如果Ctrl+1后选择第二个,需要你自己手动输入变量名,一般Ctrl+1,然后选第一个就OK;
12 | ------
13 | # 本文章已同步至GitHub仓库:Javastudy,期待您的加入:blush:
14 |
15 |
16 | # 本文章已同步至苍何的个人博客,可以直接在博客上留言哦:blush:
17 |
18 |
19 | # 来我的微信公众号玩耍呗:blush:
20 |
21 |
22 | # 扫码无套路关注我的CSDN博客:blush:
23 |
24 |
--------------------------------------------------------------------------------
/docs/常用工具和环境/eclipse/Eclipse配置Servlet模板.md:
--------------------------------------------------------------------------------
1 | 有时候新建servlet时候会生成很多我们不是想要的东西,每一次都去复制黏贴,手动删除我们不想要的东西,那么如何设置专属自己的模板呢?只需要输入短短几个字,然后ALT+/即可:
2 |
3 | 这里以Eclipse4.5.2版本为例:
4 |
5 | 1.打开Eclilpse,Window->Preferences
6 |
7 | 2.Java->Editor->Templates->New
8 |
9 | 配置如图:
10 |
11 |
12 |
13 | Pattern内容如下:
14 | ```java
15 | package ${enclosing_package};
16 | import java.io.IOException;
17 | import javax.servlet.ServletException;
18 | import javax.servlet.http.HttpServlet;
19 | import javax.servlet.http.HttpServletRequest;
20 | import javax.servlet.http.HttpServletResponse;
21 |
22 | public class ${primary_type_name} extends HttpServlet {
23 |
24 | public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
25 | response.getWriter().write("hello haohao...");
26 | }
27 |
28 | public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
29 | doGet(request, response);
30 | }
31 | }
32 | ```
33 | 勾选上“Use code formatter”->Apply->OK
34 | 3.重启Eclipse
35 |
36 | 4.使用Alt+/来快速匹配出模板,创建出简单清晰的Servlet
37 |
38 | 原文:https://blog.csdn.net/czkct/article/details/78750478
39 | ------
40 | # 本文章已同步至GitHub仓库:Javastudy,期待您的加入:blush:
41 |
42 |
43 | # 本文章已同步至苍何的个人博客,可以直接在博客上留言哦:blush:
44 |
45 |
46 | # 来我的微信公众号玩耍呗:blush:
47 |
48 |
49 | # 扫码无套路关注我的CSDN博客:blush:
50 |
51 |
52 |
--------------------------------------------------------------------------------
/docs/常用工具和环境/eclipse/eclipse中tomcat-advanced以及插件的使用.md:
--------------------------------------------------------------------------------
1 | # 一、问题背景
2 | 今天新需求,需要用到eclipse的tomcat插件,且项目的编译环境为JDK1.7及以下,而我电脑之前的JDK为1.8,tomcat为8,现在也就是要切换JDK版本为1.7且tomcat为7,搞来搞去,搞了一天,必须记录下
3 | # 二、同一电脑安装不同版本的JDK和tomcat
4 | ## 1、网上很多都很玄学
5 | 百度了下,很多说的很玄学,其实很简单。
6 | ## 2、不同版本JDK
7 | 同样的安装,只是环境变量配置的时候,修改JAVA_HOME为对应的JDK的安装目录即可,当然还有更简单的切换方法,比如配置AVA_HOME7和AVA_HOME8,然后用AVA_HOME=%AVA_HOME7%这样的方式,告诉你,亲测,没什么软用
8 | ## 3、不同版本tomcat
9 | 环境变量替换即可
10 | # 三、eclipse的tomcat插件配置
11 | 找到eclipse配置下的tomcat,然后选7x,选择tomcat的安装路径,然后下面的apache-tomcat-7.0.41\conf\Catalina\localhost将xml文件加进来,因为公司项目已经配好,具体怎么搞看自己
12 |
13 |
14 | 注意:当项目死活启动说缺少相应jar包,排除其他问题,那么可以考虑,是不是tomcat-advanced这里没有依赖给引进来。
15 | 我就是因为这个点,最后项目启动了半天,还是有经验的同事告诉我才解决这个问题。
16 | eclipse真是个神奇的东西,各种错误都某明奇妙,走IDEA了准备。
17 | ------
18 | # 本文章已同步至GitHub仓库:Javastudy,期待您的加入:blush:
19 |
20 |
21 | # 本文章已同步至苍何的个人博客,可以直接在博客上留言哦:blush:
22 |
23 |
24 | # 来我的微信公众号玩耍呗:blush:
25 |
26 |
27 | # 扫码无套路关注我的CSDN博客:blush:
28 |
--------------------------------------------------------------------------------
/docs/常用工具和环境/eclipse/eclipse中配置XML提示.md:
--------------------------------------------------------------------------------
1 | ## 一、问题原油
2 | 当我们在eclipse中编写XML时,需要出来提示信息(前提是没有联网),那么就需要进行用户自定义配置相关信息、
3 | ## 二、步骤
4 | 这里我以配置Hibernate框架 中的XML为例子
5 | ### 1、将网络地址复制
6 | 
7 | ### 2、打开windows下的个性设置profenrencese
8 | 如图,依次找到用户自定义设置
9 | 
10 | 点击add
11 | ### 3、add页面配置
12 | 将刚复制的网络URI地址放入keys中,type类型选择URI,location路径选择对应的路径,比如我这里对应的是hibernate-mapping-3.0的路径,需要在hibernate的jar包中找到该配置文件
13 | ### 4、完成配置
14 | ------
15 | # 本文章已同步至GitHub仓库:Javastudy,期待您的加入:blush:
16 |
17 |
18 | # 本文章已同步至苍何的个人博客,可以直接在博客上留言哦:blush:
19 |
20 |
21 | # 来我的微信公众号玩耍呗:blush:
22 |
23 |
24 | # 扫码无套路关注我的CSDN博客:blush:
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/常用工具和环境/eclipse/解决在Eclipse新建web项目没有自动生成web.xml和在新建servlet的时候自动生成web.xml配置.md:
--------------------------------------------------------------------------------
1 | ## 一、在Eclipse新建web项目没有自动生成web.xml解决办法
2 | ## 方法一:在Eclipse新建web项目的时候重要参数上打勾
3 | 1、file--new-Dynamic Web Project
4 | 
5 | 2、next下一步
6 | 
7 |
8 | 3、next下一步
9 | 
10 |
11 | 4、关键:这里一定要打勾,默认是没有打勾的
12 |
13 | 5、建好后可以点开就有web.xml了
14 |
15 | 
16 |
17 | ## 方法二:在已经建好的项目上加上web.xml
18 | 1.项目名称右键-->Properties:
19 | 
20 | 2.点击Project Facets,取消选中Dynamic Web Module,点击Apply
21 | 
22 | 3.重新选中Dynamic Web Module后,会出现Further configuration available...
23 | 
24 |
25 | 4.点击Further configuration available...,选中Generate web.xml deployment descriptor,点击ok,Apply后,在WEB-INF下生成了web.xml。
26 | 
27 |
28 | ## Eclipse在新建servlet的时候自动生成web.xml配置
29 | 在新建web项目的时候:
30 | 
31 | 我们新建默认用的是Tomact7.0,里面用的是servlet3.0版本默认的是使用注解配置,在新建dynamic web project 时,dynamic web module version选择2.5就ok了。
32 | 选择2.6即可
33 | 
34 | 这样就自动生成了servlet的文本.xml的自动配置t
35 | ------
36 | # 本文章已同步至GitHub仓库:Javastudy,期待您的加入:blush:
37 |
38 |
39 | # 本文章已同步至苍何的个人博客,可以直接在博客上留言哦:blush:
40 |
41 |
42 | # 来我的微信公众号玩耍呗:blush:
43 |
44 |
45 | # 扫码无套路关注我的CSDN博客:blush:
46 |
--------------------------------------------------------------------------------
/docs/文档/usingthymeleaf.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/2227324689/javaStudy/ccfa15dde5065e1d5cedbc4ae3f71e4ad22a4459/docs/文档/usingthymeleaf.pdf
--------------------------------------------------------------------------------
/docs/经验总结/java在过滤器中为http请求加请求头header.md:
--------------------------------------------------------------------------------
1 | # 前言
2 | 现在有一个需求场景是,每一个请求我都需要在请求头里面加上token这个请求头,作为一种校验机制,传统的接口可以通过设置一个全局的变量,然后通过页面携带过来(大概就是先将我们的token放在session中,写一个服务用来获取session中的token,然后主页面用ajax调用接口,将token放在隐藏域中,然后将请求头放进来,用ajax方法,这里不想洗说了),但是有一种情况是通过页面传递的并不一定都会适用所有接口,比如上传和下载的接口有时候头里面就没有token参数,可能是上传和下载是用表单提交的
3 | 这个时候如何将请求头通过后台的方法加进来?
4 | 想到用过滤器,用后台方法强制加入请求头。
5 |
6 | # HTTP请求头
7 | 关于http请求头的相关信息可以参考这票博客,这里就不画蛇添足了
8 | https://blog.csdn.net/alexshi5/article/details/80379086
9 | 下面直接上如何通过filter为请求添加请求头参数:
10 |
11 | # 新建请求控制类
12 | ```java
13 | package com.bitplan.smartCRM.web;
14 |
15 | import java.io.IOException;
16 | import java.util.Collections;
17 | import java.util.Enumeration;
18 | import java.util.HashMap;
19 | import java.util.List;
20 | import java.util.Map;
21 |
22 | import javax.servlet.Filter;
23 | import javax.servlet.FilterChain;
24 | import javax.servlet.FilterConfig;
25 | import javax.servlet.ServletException;
26 | import javax.servlet.ServletRequest;
27 | import javax.servlet.ServletResponse;
28 | import javax.servlet.http.HttpServletRequest;
29 | import javax.servlet.http.HttpServletRequestWrapper;
30 |
31 | public class HeaderMapRequestWrapper extends HttpServletRequestWrapper {
32 | /**
33 | * construct a wrapper for this request
34 | *
35 | * @param request
36 | */
37 | public HeaderMapRequestWrapper(HttpServletRequest request) {
38 | super(request);
39 | }
40 |
41 | private Map headerMap = new HashMap();
42 |
43 | /**
44 | * add a header with given name and value
45 | *
46 | * @param name
47 | * @param value
48 | */
49 | public void addHeader(String name, String value) {
50 | headerMap.put(name, value);
51 | }
52 |
53 | @Override
54 | public String getHeader(String name) {
55 | String headerValue = super.getHeader(name);
56 | if (headerMap.containsKey(name)) {
57 | headerValue = headerMap.get(name);
58 | }
59 | return headerValue;
60 | }
61 |
62 | /**
63 | * get the Header names
64 | */
65 | @Override
66 | public Enumeration getHeaderNames() {
67 | List names = Collections.list(super.getHeaderNames());
68 | for (String name : headerMap.keySet()) {
69 | names.add(name);
70 | }
71 | return Collections.enumeration(names);
72 | }
73 |
74 | @Override
75 | public Enumeration getHeaders(String name) {
76 | List values = Collections.list(super.getHeaders(name));
77 | if (headerMap.containsKey(name)) {
78 | values.add(headerMap.get(name));
79 | }
80 | return Collections.enumeration(values);
81 | }
82 |
83 | }
84 | ```
85 | # 新建过滤器
86 | 注意:需要将请求头里面没有token的接口后面带上token参数,参数名是“”token“”
87 | ```java
88 | public class RemoteAddrFilter implements Filter {
89 |
90 | @Override
91 | public void destroy() {
92 |
93 | }
94 |
95 | @Override
96 | public void doFilter(ServletRequest request, ServletResponse response,
97 | FilterChain chain) throws IOException, ServletException {
98 | HttpServletRequest req = (HttpServletRequest) request;
99 | HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(req);
100 | //获得请求参数中的token值
101 | String token = request.getParamter("token");
102 | if(!StringUtils.isEntry(token)){
103 | //如果请求中带有这个参数,则进行过滤加一个header头
104 | requestWrapper.addHeader("tokenr", token);
105 | chain.doFilter(requestWrapper, response); // Goes to default servlet.
106 | }
107 | chain.doFilter(request, response); // Goes to default servlet.
108 |
109 | }
110 |
111 | @Override
112 | public void init(FilterConfig filterConfig) throws ServletException {
113 |
114 | }
115 | ```
116 | 这个时候请求头中是会带有这个token,但是你可能用右键F12看不到这个头,相当于是一层伪代理,我们的接口是已经加上token校验。
117 |
118 | # 总结
119 | 查找了很多资料,百度找到的和其他博客上说的感觉都是大同小异,并没有达到想要的效果。我觉得写博客就得一针见血,什么问题必须标书清楚,不要为了写而写,你可能不知道当人看了半天你的博客但是却没有得到问题的解决是一件多么痛苦的过程。最后是在https://stackoverflow.com上面找到的答案,当百度找不到答案时尝试谷歌,谷歌找不到时尝试下stackoverflow。
120 | 查找问题的搜索词也很重要,这些都需要有相关的经验才可以快速的定位问题,快速的找到解决办法,这才是一个资深程序眼必须会的一项技能。
121 |
--------------------------------------------------------------------------------