2021.9.15注意字符串的转换,JSP的JSTP和EL表达式、取余的使用、MyBatis初解

1、注意字符串的转换

在这里插入图片描述

可以将字符串转化为整数:    Integer.parseInt(pageNo)
parseInt是一个静态方法,因为他可以直接由类名去调用

2、在doGet方法中调用doPost方法

在这里插入图片描述

3、实现JS修改网页点击之后显示的样式

前端页面每页条数的下拉框值,需要获取之后进行显示在这里前端页面每页条数的下拉框值,需要获取之后进行显示插入图片描述
点击后样式进行切换
在这里插入图片描述

如:

在这里插入图片描述
在这里插入图片描述
当鼠标显示第一页时,样式在第一行,当显示第二页时,样式在第一行,以此类推,前端获取后端的元素,进行自动的切换样式


//window.onload();页面加载完成后执行的方法
window.onload = function(){
console.log(------网页加载完成后再执行的方法-------)
//处理页面显示的:每页条数
let = pageSize = "${pageSize}";//JSP中的EL表达式,$是一个语法,这里是获取后台传的值
console.log ("pageSize="+pageSize)//这里是打印一下,看看是否获取到了值
//选中前端页面每页条数的下拉框值
document.getElementById("pageSize").value = pageSize;


//处理页面显示的当前页码CSS样式
let pageNo = "${pageNo}";//获后台传入的页码
let liPageNos=document.getElementsByClassName("liPageNo");//创建一个数组获取当前页的li元素
for(let liPageNo of liPageNos){//对所有获取li的元素进行循环
console.log(liPageNo);
let cls = liPageNo.getAttribute("class");//获取所有Class为liPageNo的li的所有class值
console.log(cls);


//由上面的代码图可以知道,页码1、2、3在标签中,我们通过children[0]获取li中的第一个标签<a>
//inerHTML再获取a标签中的第一个文字。这样就可以拿到页码了
let curPageNo = liPageNo.children[0].innerHTML;//获取当前网页显示的页码
console.log(curPageNo);

//判断当前页码是否被选中
//cls就是获取的所有li元素的class值,然后进行判断liCurrentPage,是否在那个li里面
//如果当前的值大于-1,就是在那个li中,被选中

if(cls.indexOf("liCurrentPage") > -1 ){
//如果当前页码存在这个clss="liCurrentPage"元素
//就运用replace将class="liCurrentPage"元素替换为class="",即清除他的liCurrentPage样式
	liPageNo.setAttribute("class",cls.replace("liCurrentPage",""));
}

//再次进行判断,前端获取的页码与后端获取的页码进行匹配,如果匹配就将样式加上
if(curPageNo == pageNo){
	liPageNo.setAttribute("class","liPageNo liCurrentPage");
		}
	}
}

4、EL表达式

EL:Expression Language,表达语言
语法:${ }

优先级:

JSP中的四大作用域对象:
pageContext (页面范围) ­> request(请求) ­> session(会话) ­> application(web应用)
按照上述从小到大的顺序,依次在作用域中查找,先查找到,就先执行,执行完,就结束。如果一直都没有查找到,则:打印空字符串。

${a}
<%
pageContext.setAttribute("a","a_pageContext");
request.setAttribute("a","a_request");
session.setAttribute("a","a_session");
application.setAttribute("a","a_application");
%>

在JSP页面内写${a},他就会按顺序去查找a这个的值是什么。

5、JSPL

JSTL:Java Standard Tag Library,Java标准的标签库

标签库的作用:简化JSP页面的代码,使页面更整洁。
官方网址:http://tomcat.apache.org/download­taglibs.cgi
JSP页面使用Taglib的过程:

1.下载JSTL的核心标签

2.(IEDA)项目中放入jstl的jar包

将taglibs­standard­impl­1.2.5.jar放入/WEB­INF/lib下,右键,选择:“Add as Library…”
taglibs­standard­spec­1.2.5.jar

3. jsp文件中引入taglib指令

4.使用jstl的标签

core核心标签库
set、out、if 、choose、forEach、redirect、param、url
redirect:类似于:response.sendRedirect();
JSP页面引入core核心标签库的代码:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

6、取余方法的使用

在这里插入图片描述

我们在页面显示信息时,需要进行分页,但是我们如何将数据库总纪录数,总页数显示出来呢。要显示总页数这里我们就需要用到一个方法

计算总页数:LtotalPage = 总记录数(total)/每页记录数(pageSize)

我们有一个Math类,中有一个ceil的私有方法:返回大于等于某一个数的最小整数,这里需要使用这个方法。比如说12条记录,每页显示5条,他要显示的总页数就是3。

Double pages = Math.ceil(1.0*total/pageSizeInt);

然后数据库的总记录数就可以通过mysql语句的查询来获取。

String sql = "select count(id) from user; "

在这里插入图片描述
通过EL在jsp页面获取值并且显示
在这里插入图片描述

7、MyBatis初步讲解

官网:http://mybaris.net.cn/

什么是 MyBatis ?

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

1、(操作环境为:IDEA)首先放置文件:将Mybatis-3.5-1.jar放置到web/WEB-INF/lib目录下面,之后右键,选择:“Add as Library…”
然后在src目录下面在这里插入图片描述
创建mapper目录,和db.properties和mybatis-config.xml文件,接着在mapper文件夹下面创建UserMapper.xml

2、文件详解:db.properties文件是用来放置数据库的配置信息
在这里插入图片描述
mybatis-config是mybatis的核心配置文件

XML 头部的声明,用来验证 XML 文档正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则是包含一组 mapper 映射器(这些 mapper 的 XML 文件包含了 SQL 代码和映射定义信息

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
//将db.properties文件加载进来
    <properties resource="db.properties">
    </properties>
//默认的环境:读取db.properties信息
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    
//增删改查的操作,读取mapper/UserMapper.xml的信息
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

UserMapper.xml中存放Mysql执行的语句(映射文件)

头部标记中的dtd:规定xml的根元素是什么。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        
	//这个是命名空间,可以直接通过Dbutil获取
	<mapper namespace="abc">

    <!-- 根据用户名和密码查询用户是否存在 ,这里的id值必须保证在整个文件中唯一-->
    <select id="getUserByUsernameAndPwd"
            parameterType="com.neu.shopping.entity.User"
            resultType="com.neu.shopping.entity.User">
        select * from t_user where username = #{username} and password = #{password}
         and is_delete = 0
    </select>

</mapper>

改动之前和之后的文件对比

同时mybatis的Dbutil也需要进行一些改变

/**
 * MyBatis中获取SqlSession的方法。
 * @return
 */
public static SqlSession getSqlSession() {
    String resource= "mybatis-config.xml";
    InputStream inputStream = null;
    try {
        inputStream = Resources.getResourceAsStream(resource);
        System.out.println("----加载MyBatis配置文件成功!");
    } catch (IOException e) {
        e.printStackTrace();
        throw new RuntimeException(e);
    }
    // 获取SqlSession工厂对象。
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
            .build(inputStream);
    System.out.println("----构建MyBatis SqlSessionFactory对象成功!");
    // 从SqlSession工厂对象中打开一个SqlSession(Connection)对象。
    SqlSession sqlSession = sqlSessionFactory.openSession();
    return sqlSession;
}

原来的Dbutil


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException

public class DbUtil {
    /**
     * 获取数据库连接的方法。
     * @return
     */
    public static Connection getConnection() {
        //1. 数据库的驱动(Java 连接 MySQL)
        String driver = "com.mysql.jdbc.Driver";
        try {
            Class.forName(driver);
            System.out.println("-----1.数据库驱动加载成功!");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
        //2. 数据库连接的URL
        String url = "jdbc:mysql://localhost:3306/eshopdb?characterEncoding=UTF-8";
        //3. 连接数据库的用户名和密码
        String username = "root";
        String password = "123456";
        //4. 开始连接数据库,返回数据库连接对象。
        try {
          return DriverManager.getConnection(url, username, password);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    public static void main(String[] args) {
        getConnection();
    }

}

可以看到,原来的Dbutil代码被极大限度的省略掉了,通过XML中构建了SQLsessionFactory

从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。但是也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值