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/downloadtaglibs.cgi
JSP页面使用Taglib的过程:
1.下载JSTL的核心标签
2.(IEDA)项目中放入jstl的jar包
将taglibsstandardimpl1.2.5.jar放入/WEBINF/lib下,右键,选择:“Add as Library…”
taglibsstandardspec1.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);