JSP的一些笔记
1.输出对象
out.print("<h1>哈哈哈哈哈</h1>");
2.重定向
response.sendRedirect("./index2.jsp");
3.JSP常用内置对象
1.response(响应对象)
2.request(http请求对象)
3.Session(会话对象)
4.服务端页面接收表单传过来的参数
//设置中文编码防止乱码
request.setCharacterEncoding("utf-8");
String acc=request.getParameter("account");
String password=request.getParameter("password");
String student=request.getParameter("student");
String age=request.getParameter("age");
5.JDBC连接mysql
package com.hgy.jdbc;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.ResultSetMetaData;
import java.sql.Connection;
public class jdbctest {
public static void main(String[] args) {
//加载驱动
String driverStr="com.mysql.jdbc.Driver";
//数据库连接
String dataBaseUrl="jdbc:mysql://localhost:3306/chat";
//用户名
String account="root";
//密码
String password="123456";
//创建连接对象 需要异常处理
try {
Connection connection=DriverManager.getConnection(dataBaseUrl, account, password);
//创建命令对象
PreparedStatement pStatement=connection.prepareStatement("select * from book");
//执行命令集合 获取sql语句执行结果
ResultSet rSet=pStatement.executeQuery();
//获取字段列数
ResultSetMetaData rMetaData=rSet.getMetaData();
int ColumnNumber=rMetaData.getColumnCount();
//打印结果 next()方法获取 下一个结果 如果为末尾返回false
while(rSet.next()){
for(int i=1;i<=ColumnNumber;i++){
//将每列打印出来
System.out.print(rSet.getString(i)+" ");
}
System.out.println();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
6.servlet的基本使用
6.1新建一个servlet文件
package com.hgy.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.hgy.entity.Book;
/**
* Servlet implementation class select
*/
@WebServlet("/select") //这个应该是监听的路径
public class select extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public select() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at: ").append(request.getContextPath());
List<Book> books =new ArrayList<Book>();
books.add(new Book(104, "三体", 95, "中国人民出版社"));
books.add(new Book(105, "上海堡垒", 50, "中国人民出版社"));
books.add(new Book(106, "龙族",60, "中国人民出版社"));
books.add(new Book(107, "神印王座", 66, "中国人民出版社"));
//利用会话保存员工记录
HttpSession session=request.getSession();
session.setAttribute("Books", books);
//跳转指定的jsp
response.sendRedirect("Book_servlet.jsp");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
6.2重定向跳转后的页面Book_servlet.jsp
<%@page import="com.hgy.entity.Book"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//获取信息 打印
List<Book> books=(List<Book>) session.getAttribute("Books");
for(Book bs:books){
%>
<div><%=bs.getTitle() %></div>
<%
}
%>
</body>
</html>
6.3调用上面创建的servlet
<a href="select">跳转到servlet</a>
7.servlet和jdbc一起使用
7.1 封装好的JDBC类,直接调用方法
package com.hgy.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/*
* 这是jdbc封装好的文件
*/
public class jdbc {
private static Connection con;
private static PreparedStatement ps;
private static ResultSet rs;
static{
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/chat","root","123456");
}
catch (Exception e) {
// TODO: handle exception
}
}
//增删改
public static void update(String sql){
try {
ps = con.prepareStatement(sql);
ps.executeUpdate();
}
catch (Exception e) {
// TODO: handle exception
}
}
//查询
public static ResultSet query(String sql){
try {
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
}
catch (Exception e) {
// TODO: handle exception
}
return rs;
}
}
7.2 servlet文件
package com.hgy.servlet;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.hgy.entity.Book;
import com.hgy.jdbc.jdbc;
/**
* Servlet implementation class jdbcSelect
*/
@WebServlet("/jdbcSelect")
public class jdbcSelect extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public jdbcSelect() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at: ").append(request.getContextPath());
try{
//新建一个list容器
List<Book> books =new ArrayList<Book>();
//创建一个SQL语句
String sql = "select * from book";
//调用封装好的JDBC类中的方法
ResultSet rs=jdbc.query(sql);
//获取字段列数
ResultSetMetaData rMetaData=rs.getMetaData();
int ColumnNumber=rMetaData.getColumnCount();
while(rs.next()){
//将获取到的数据库表内容加入到Book对象中
Book book = new Book(rs.getInt(1), rs.getString(2),rs.getInt(3),rs.getString(4));
//把book对象加入books容器
books.add(book);
// for(int i=1;i<=ColumnNumber;i++){
// //将每列打印出来
// System.out.print(rs.getString(i)+" ");
// }
// System.out.println();
}
//利用会话保存员工记录
HttpSession session=request.getSession();
session.setAttribute("Books2", books);
//跳转指定的jsp
response.sendRedirect("Book_servlet2.jsp");
}catch (Exception e) {
System.out.println(e.getMessage());
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
7.3 跳转后的jsp页面
<%@page import="com.hgy.entity.Book"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>连接mysql和servlet</title>
<style>
table{
width:500px;
height:40px;
border-collapse:collapse;
background-image:linear-gradient(to right,orange,yellow);
}
table td{
border:1px solid black;
}
</style>
</head>
<body>
<table>
<%
//创建一个list容器接收内容 按属性获取会话内容
List<Book> books2=(List<Book>) session.getAttribute("Books2");
for(Book bs:books2){
%>
<tr>
<td><%=bs.getId() %></td>
<td><%=bs.getTitle() %></td>
<td><%=bs.getPrice() %></td>
<td><%=bs.getPublisher() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
8.servlet和jdbc执行删除数据操作
jdbc用上面封装好的
8.1 servlet文件,执行删除SQL语句
package com.hgy.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hgy.jdbc.jdbc;
/**
* Servlet implementation class jdbcdelete
*/
@WebServlet("/jdbcdelete")
public class jdbcdelete extends HttpServlet {
private static final long serialVersionUID = 1L;
public jdbcdelete() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
//获取传递过来的员工编号
String id = request.getParameter("id");
//执行删除命令
String sql = "delete from book where id="+id;
jdbc.update(sql);
//跳转 查询操作的servlet以更新数据
response.sendRedirect("jdbcSelect");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
8.3 jsp页面 点击删除后跳转到执行删除操作的servlet文件
<table>
<%
List<Book> books2=(List<Book>) session.getAttribute("Books2");
for(Book bs:books2){
%>
<tr>
<td><%=bs.getId() %></td>
<td><%=bs.getTitle() %></td>
<td><%=bs.getPrice() %></td>
<td><%=bs.getPublisher() %></td>
<td><a onclick="return confirm('是否确认删除')" href="jdbcdelete?id=<%=bs.getId() %>">删除</a></td>
</tr>
<%
}
%>
</table>
9. servlet和jdbc 执行插入数据操作
jdbc用上面封装好的
9.1 servlet页面 接收jsp页面传过来的表单值
package com.hgy.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hgy.jdbc.jdbc;
/**
* Servlet implementation class jdbcInsert
*/
@WebServlet("/jdbcInsert")
public class jdbcInsert extends HttpServlet {
private static final long serialVersionUID = 1L;
public jdbcInsert() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
request.setCharacterEncoding("utf-8");
String id=request.getParameter("id");
String bookName=request.getParameter("bookName");
String price=request.getParameter("price");
String publisher=request.getParameter("publisher");
System.out.println(id+bookName+price+publisher);
//执行插入命令 注意字符串拼接
String sql="insert into book(id,bookname,price,publisher) values("+id+","+"'"+bookName+"'"+","+price+","+"'"+publisher+"'"+")";
//System.out.println(sql);
jdbc.update(sql);
//跳转查询操作
response.sendRedirect("jdbcSelect");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
9.2 jsp页面
<form action="jdbcInsert" method="post">
ID<input type="text" name="id">
书名<input type="text" name="bookName">
价格<input type="text" name="price">
出版社<input type="text" name="publisher">
<input type="submit">
</form>
10.servlet和jdbc执行指定查询操作
jdbc用7.1中封装好的文件
10.1 jsp页面
<h1>查询出版社</h1>
<form action="jdbcSelect2" method="post">
出版社<input type="text" name="publisher">
<input type="submit">
</form>
<!-- 数据打印 -->
<table>
<%
List<Book2> books2=(List<Book2>) session.getAttribute("Book3");
for(Book2 bs:books2){
%>
<tr>
<td><%=bs.getId() %></td>
<td><%=bs.getTitle() %></td>
<td><%=bs.getPrice() %></td>
<td><%=bs.getPublisher() %></td>
<td><%=bs.getTid() %></td>
<td><%=bs.getTypeName() %></td>
</tr>
<%
}
%>
</table>
10.2 servlet文件
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
request.setCharacterEncoding("utf-8");
//获取表单提交的值
String publisher=request.getParameter("publisher");
try{
//创建一个list容器
List<Book2> books2=new ArrayList<Book2>();
String sql="SELECT b.*,t.name FROM book2 b,booktype t WHERE b.tid=t.id and b.publisher like '%"+publisher+"%'";
ResultSet rSet=jdbc.query(sql);
//获取字段列数
ResultSetMetaData rMetaData=rSet.getMetaData();
int ColumnNumber=rMetaData.getColumnCount();
while(rSet.next()){
Book2 Book2=new Book2(rSet.getInt(1), rSet.getString(2), rSet.getInt(3),rSet.getString(4),rSet.getInt(5), rSet.getString(6));
books2.add(Book2);
//控制台打印数据库内容
for(int i=1;i<=ColumnNumber;i++){
//将每列打印出来
System.out.print(rSet.getString(i)+" ");
}
System.out.println();
}
//将list容器添加到session会话中
HttpSession session=request.getSession();
session.setAttribute("Book3", books2);
//跳转
response.sendRedirect("Book_servlet3.jsp"); //这里的是10.1提交表单的jsp文件
}catch (Exception e) {
System.out.println(e.getMessage());
System.out.println("aaa");
}
}
10.3 用到的数据库SQL语句
create table book
(
`id` int AUTO_INCREMENT PRIMARY KEY,
`title` varchar(50),
`price` INT,
`publisher` VARCHAR(50),
`tid` int
) default character set = 'utf8';
create table BookType
(
`id` int AUTO_INCREMENT PRIMARY KEY,
`name` varchar(50)
) default character set = 'utf8';
insert into booktype values(null,'小说');
insert into booktype values(null,'教材');
insert into booktype values(null,'散文');
insert into book values(null,'三国演义',200,'清华大学出版社',1);
insert into book values(null,'水浒传',280,'武汉大学出版社',1);
insert into book values(null,'红楼梦',250,'武汉大学出版社',1);
insert into book values(null,'西游记',300,'清华大学出版社',1);
insert into book values(null,'C#面向对象程序设计',100,'清华大学出版社',2);
insert into book values(null,'C语言程序设计',100,'清华大学出版社',2);
insert into book values(null,'SQLServer数据库',100,'清华大学出版社',2);
insert into book values(null,'静态网页设计',100,'北京大学出版社',2);
insert into book values(null,'Java高级编程',100,'北京大学出版社',2);
insert into book values(null,'落花生',200,'北京大学出版社',3);
insert into book values(null,'小橘灯',300,'清华大学出版社',3);
insert into book values(null,'我喜欢出发',100,'武汉大学出版社',3);
insert into book values(null,'热爱生命',150,'北京大学出版社',3);
insert into book values(null,'剪不断的情愫',180,'清华大学出版社',3);
insert into book values(null,'嫁给幸福',200,'北京大学出版社',3);
insert into book values(null,'围城',160,'清华大学出版社',1);
insert into book values(null,'封神演义',300,'北京大学出版社',1);
insert into book values(null,'官场现形记',260,'武汉大学出版社',1);
insert into book values(null,'陌上花开',220,'北京大学出版社',3);
insert into book values(null,'高等数学',190,'武汉大学出版社',2);
insert into book values(null,'大学语文',120,'清华大学出版社',2);
insert into book values(null,'流浪地球',100,'北京大学出版社',1);
insert into book values(null,'亮剑',170,'武汉大学出版社',1);
引入jstl标签
1.放入jstl-1.2.jar包
WebContent->WEB-INF->lib文件夹下,右键jar文件 Build Path
2.头部引入<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
Eclipse的一些设置
1.设置全局提示
上方工具栏Window->Preferences->Java->Editor->Content Assist
在右边区域下方的 Auto activation triggers for Java: 的.后面加入26个字母 然后应用保存
2.设置JSP默认编码
上方工具栏Window->Preferences
右上角搜索JSP
然后点击Web目录下的JSP Files选项
右侧的Encoding中即可设置默认编码