1.jsp中连接数据库
<%--
Created by IntelliJ IDEA.
User: 86137
Date: 2021/4/16
Time: 14:29
To change this template use File | Settings | File Templates.
--%>
<%@page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String user = "root";
String pwd = "123456";
Connection con=null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/student_ms?useUnicode=true&useJDBCCompliantTimezoneShift=true&serverTimezone=UTC&characterEncoding=utf8";
if(con==null)
con=DriverManager.getConnection(url,user,pwd);
//out.print("ues");
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
2.JDBC预处理语句:
第一句设置格式
<%
request.setCharacterEncoding("UTF-8");
String sid = request.getParameter("sid");
String name = request.getParameter("name");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
String date = request.getParameter("user_date");
String university = request.getParameter("university");
String department = request.getParameter("department");
String major = request.getParameter("major");
String grade = request.getParameter("grade");
String sql="Insert into student(sid,name,password,sex,birthday,university,department,major,grade) values(?,?,?,?,?,?,?,?,?)";
PreparedStatement pt=con.prepareStatement(sql);
pt.setString(1, (sid));
pt.setString(2, name);
pt.setString(3, password);
pt.setString(4, sex);
pt.setString(5, date);
pt.setString(6, university);
pt.setString(7, department);
pt.setString(8, major);
pt.setString(9, grade);
if(pt.executeUpdate()==1)
{%>数据插入成功!<br>
<%
response.sendRedirect("student_login.jsp");
}
else
{%>数据插入失败!<br><%
response.sendRedirect("stdent_regist.jsp");
}
//,password,sex,user_date,university,department,major,grade
%>
三、转发与重定向
关于重定向和转发的区别
1.request.getRequstDispathcer().forward 只能找到同一web目录下站点
且此方法可以共享同一个request和response对象
2.转发是服务器行为、重定向是客户端行为
3.转发只发出了一次请求 然后收到
4.重定向是至少两次
5.重定向较慢 因为还得多发一次请求
四、javaweb常用工具类
1.date对象与字符串转化工具类
package cn.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
private DateUtils(){}
public static Date strToDate(String str,String dateFormat) {
SimpleDateFormat format = new SimpleDateFormat(dateFormat);
try {
Date date = format.parse(str);
return date;
} catch (Exception e) {
return null;
}
}
public static final String dateToStr(Date date,String dateFormat){
SimpleDateFormat format = new SimpleDateFormat(dateFormat);
String str = format.format(date);
return str;
}
}
2.sql连接工具类
package cn.util;
import java.sql.*;
public class DbUtils {
private static final String DRIVER = "net.sourceforge.jtds.jdbc.Driver";
private static final String URL = "jdbc:jtds:sqlserver://localhost:1433/StudentScore";
public final static int PAGE_SIZE=2;
private static final String USERID = "sa";
private static final String UERPASSWORD = "1234";
// 禁止实例对象
private DbUtils() {
}
static {
try {
Class.forName(DRIVER);
} catch (Exception e) {
e.printStackTrace();
}
}
// 获得打开的数据连接
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection(URL, USERID, UERPASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
// 关闭数据集/语句/连接对象
public static void close(ResultSet rs, Statement st, Connection conn) {
try {
if (rs != null)
rs.close();
if (st != null)
st.close();
if (conn != null)
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
<%--
Created by IntelliJ IDEA.
User: 86137
Date: 2021/4/16
Time: 14:29
To change this template use File | Settings | File Templates.
--%>
<%@page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String user = "root";
String pwd = "123456";
Connection con=null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/student_ms?useUnicode=true&useJDBCCompliantTimezoneShift=true&serverTimezone=UTC&characterEncoding=utf8";
if(con==null)
con=DriverManager.getConnection(url,user,pwd);
//out.print("ues");
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
3.json工具类+GSON
package cn.util;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class JsonUtils {
private static Gson gson=null;
private JsonUtils(){}
static{
gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
}
public static String objectToJson(Object obj){
String str = gson.toJson(obj, obj.getClass());
return str;
}
public static Object jsonToObject(String str, Class cls){
Object obj=gson.fromJson(str, cls);
return obj;
}
}
五、实例Ajax
1、ajax与serlvet实例:
1.这是一个json对象
2.ajax:
注意的点:url中/sgms是项目名 一定要加
设置了contentType 为“application/json;charset=utf-8后 必须data提交json数据
利用json.stringify将obj对象转化为json序列字符串即可
https://blog.csdn.net/weixin_33912246/article/details/91425914?ops_request_misc=&request_id=&biz_id=102&utm_term=ajax%E4%B8%ADcontentType&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187
3.servlet方法中:
req和resp先设置一下编码
下面io流的学习笔记:
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8"));
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
ps:
将字符串转化为实例对象方法 好用
StudentInfo student = (StudentInfo) JsonUtils.jsonToObject(sb.toString(), StudentInfo.class);
常用与数据库交互代码:
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = DbUtils.getConnection();
stmt = conn.createStatement();
String checkSql = "SELECT *\n" +
"FROM ScoreInfo\n" +
"WHERE subjectId = (SELECT subjectId FROM SubjectInfo WHERE subjectName='" + student.getSubjectName() + "') \n" +
"\t AND studentId = (SELECT studentId FROM StudentInfo WHERE studentNo='" + student.getStudentNo() + "')";
rs = stmt.executeQuery(checkSql);
if (!rs.next()) {
String insertSql = "INSERT INTO ScoreInfo(subjectId, studentId, studentScore, modifyTime)\n" +
"VALUES ((SELECT subjectId FROM SubjectInfo WHERE subjectName='" + student.getSubjectName() + "'),\n" +
"\t\t(SELECT studentId FROM StudentInfo WHERE studentNo='" + student.getStudentNo() + "'), " + student.getStudentScore() + ", GETDATE())";
int isSuccess = stmt.executeUpdate(insertSql);
System.out.println(insertSql + '\n' + isSuccess);
if (isSuccess > 0) {
System.out.println("插入成绩成功");
out.write("success");
} else {
out.write("fail");
}
} else {
System.out.println("插入成绩重复,插入失败");
out.write("fail");
}
六、jsp的一些内置对象
servletContext 可以设置值 传值给其他页面
this.getServletContext() ServletContext context
String url=context.getInitParamter(“url”)
resp.setContentType("")
req.setCharacterEncodeing(“UTF-8”)
JSP中九大内置对象
保存代数据置在一个页面中有效
request:
保存的数据只在一次请求中有效,请求转发会携带
seesion 一次会话 从打开浏览器到关闭浏览器
application
web服务器开着 里面数据一直有效