转自暗魂攻防实验室
https://www.jetbrains.com/idea/ #idea下载
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1774786&highlight=idea#idea在线激活
汉化插件
java 1.8
tomacat 9.0
简单测试,不选数据库了
解决控制台乱码
帮助-》编辑自定义VM选项
-Dfile.encoding=UTF-8
运行默写代码片段时,点击绿的三角就可以执行
JavaEE-HTTP-Servlet&路由&周期
#JavaEE-HTTP-Servlet&路由&周期
参考:https://blog.csdn.net/qq_52173163/article/details/121110753
解释
Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。使用Servlet可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。本章内容详细讲解了web开发的相关内容以及servlet相关内容的配置使用,是JAVAEE开发的重中之重。
创建和使用Servlet
-创建一个类继承HttpServlet
-web.xml配置Servlet路由
-WebServlet配置Servlet路由
-写入内置方法(init service destroy doget dopost)
Servlet生命周期
处理接受和回显
HttpServletRequest是ServletRequest的子接口
getParameter(name) — String 通过name获得值
getParameterValues — String[ ] 通过name获得多值
HttpServletResponse是ServletResponse的子接口
setCharacterEncoding() 设置编码格式
setContentType() 设置解析语言
getWriter() 获得一个PrintWriter字符输出流输出数据
PrintWriter 接受符合类型数据
JavaEE-数据库-JDBC&Mybatis&库
#JavaEE-数据库-JDBC&Mybatis&库
-原生态数据库开发:JDBC
参考:https://www.jianshu.com/p/ed1a59750127
JDBC(Java Database connectivity): 由java提供,用于访问数据库的统一API接口规范.数据库驱动: 由各个数据库厂商提供,用于访问数据库的jar包(JDBC的具体实现),遵循JDBC接口,以便java程序员使用!
1、下载jar
https://mvnrepository.com/
2、引用封装jar
创建lib目录,复制导入后,添加为库
3、注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
4、建立数据库连接
String url ="jdbc:mysql://localhost:3306/demo01";
Connection connection=DriverManager.getConnection(url,"x","x");
5、创建Statement执行SQL
Statement statement= connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
6、结果ResultSet进行提取
while (resultSet.next()){
int id = resultSet.getInt("id");
String page_title = resultSet.getString("page_title");
.......
}
安全修复SQL注入:预编译
原理:提前编译好执行逻辑,你注入的语句不会改变原有逻辑!
-框架数据库开发:Mybatis
Mybatis是一款优秀的持久层框架,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程,减少了代码的冗余,减少程序员的操作。
//mysql-connector-java-5.1.47.jar
//在目录下建一个lib,并加入到库文件当中
//这边用的数据库的例子是从xhcms的数据库中拿到的文件
package com.example.demo;
import java.sql.*;
public class MyselectServiet {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/xhcms";
Connection connection = DriverManager.getConnection(url,"xhcms","admin123");
System.out.println(connection);
String sql = "select * from manage";
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql); //[email protected]
while (rs.next()){
int id =rs.getInt("id");
String name = rs.getString("name");
String qq = rs.getString("qq");
String mail = rs.getString("mail");
System.out.println(id+"||"+name+"||"+qq+"||"+mail);
}
}
}
预编译技术后边会讲到,在java当中比较容易实现所以不容易出现sql注入
String sql = "select * from manage where id="+id;//拼接写法
String sql = "select * from manage where id=?";//预编译写法
预编译SQL语句并执行,预防SQL注入问题
普通查询
//mysql-connector-java-5.1.47.jar
//在目录下建一个lib,并加入到库文件当中
//这边用的数据库的例子是从xhcms的数据库中拿到的文件
package com.example.demo;
import java.sql.*;
import java.util.Scanner;
public class MyselectServiet {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//通过输入id,来查找对应的值
Scanner scanner = new Scanner(System.in);
System.out.print("please inout id:");
String s = scanner.nextLine();
//System.out.println(s);
//数据库查询
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/xhcms";
Connection connection = DriverManager.getConnection(url,"xhcms","admin123");
//System.out.println(connection);
//通过传入的id值来进行查询
String sql = "select * from manage where id="+s;
System.out.println(sql);
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
//System.out.println(rs);
//拿到对应的查询值进行输出
while (rs.next()){
int id =rs.getInt("id");
String name = rs.getString("name");
String qq = rs.getString("qq");
String mail = rs.getString("mail");
System.out.println(id+"||"+name+"||"+qq+"||"+mail);
}
}
}
预编译的写法
String safesql="select * from news where id=?";
PreparedStatement preparedStatement=connection.prepareStatement();
preparedStatement.setString(1,s);
ResultSet resultSet=preparedStatement.executeQuery();
预编译实现
//mysql-connector-java-5.1.47.jar
//在目录下建一个lib,并加入到库文件当中
//这边用的数据库的例子是从xhcms的数据库中拿到的文件
package com.example.demo;
import java.sql.*;
import java.util.Scanner;
public class MyselectServiet {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//通过输入id,来查找对应的值
Scanner scanner = new Scanner(System.in);
System.out.print("please inout id:");
String s = scanner.nextLine();
//System.out.println(s);
//数据库查询
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/xhcms";
Connection connection = DriverManager.getConnection(url,"xhcms","admin123");
//System.out.println(connection);
/* //通过传入的id值来进行查询,普通写法
String sql = "select * from manage where id="+s;
System.out.println(sql);
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
//System.out.println(rs);*/
//预编译写法
String safesql="select * from manage where id=?";
PreparedStatement preparedStatement=connection.prepareStatement(safesql);
preparedStatement.setString(1,s);
ResultSet rs=preparedStatement.executeQuery();
System.out.println(safesql);
//拿到对应的查询值进行输出
while (rs.next()){
int id =rs.getInt("id");
String name = rs.getString("name");
String qq = rs.getString("qq");
String mail = rs.getString("mail");
System.out.println(id+"||"+name+"||"+qq+"||"+mail);
}
}
}