javaweb笔记

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服务器开着 里面数据一直有效

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值