JSP笔记

这是一篇关于JSP的学习笔记,详细记录了JSP的使用,包括EL表达式的应用,如访问对象属性、数组和集合元素,以及作用域的理解。还提及了如何在JSP中处理cookie,并给出了几个具体示例,如demo1.jsp到demo5.jsp,涵盖了从简单的EL表达式到复杂业务逻辑的实现,如在BBS应用中添加、查询和登录留言。
摘要由CSDN通过智能技术生成

一、JSP-20190909
1.demo1.jsp
<%@page import=“java.util.ArrayList”%>
<%@ page language=“java” import=“demo.Student,java.util.HashMap” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here ${"大家好"} ${'下午好'} ${123}
<!-- EL表达式输出的变量必须存放在作用域中,通过键名称访问对应值 -->
<% 
int a=100;
pageContext.setAttribute("key1", a);
%>
${key1}
<hr/>

<!-- EL表达式通过"."符号访问对象的属性,必须要求该对象提供规范的get方法. -->
<%
Student s=new Student(1,"Tom",20);
request.setAttribute("student", s);
%>
${student.id}<hr/>


<!-- EL表达式通过"[]"访问数组或者有序集合指定下标对应的元素内容 -->
<%
int num[]=new int[]{1,2,4,5,7,789,345};
session.setAttribute("num", num);

ArrayList<String> slist=new ArrayList<String>();
slist.add("aa");
slist.add("bb");
slist.add("cc");
slist.add("dd");
application.setAttribute("slist", slist);
%>
${num[3]}	${slist[2]}<hr/>


<!-- EL表达式通过[]和.组合使用访问有序集合中指定对应的属性 -->
<%
ArrayList<Student> stulist=new ArrayList<Student>();
stulist.add(new Student(1,"Tom",20));
stulist.add(new Student(2,"Mary",21));
stulist.add(new Student(3,"Tony",22));
stulist.add(new Student(4,"Jimmy",23));
stulist.add(new Student(5,"Sam",24));
request.setAttribute("stulist", stulist);
%>
${stulist[2].name}
<hr/>

<!-- 在访问键值对集合时,采用["键名称"]的形式是处理. -->
<%
HashMap<String,Student> map=new HashMap<String,Student>();
map.put("k1", new Student(1,"Tom",20));
map.put("k2", new Student(2,"Mary",21));
map.put("k3", new Student(4,"Jimmy",23));
map.put("k4", new Student(3,"Tony",22));
request.setAttribute("map", map);
%>	
${map["k1"].name}		${map.k2.name }

笔记:
1.EL表达式输出静态内容
2.EL表达式输出的变量必须存放在作用域中,通过键名称访问对应值
3.EL表达式通过".“符号访问对象的属性,必须要求该对象提供规范的get方法.
4.EL表达式通过”[]"访问数组或者有序集合指定下标对应的元素内容
5.EL表达式通过[]和.组合使用访问有序集合中指定对应的属性
6.在访问键值对集合时,采用[“键名称”]的形式是处理
7.

2.demo2.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here
<!-- 
pageContext < request < session < application
EL表达式默认情况从小到大依次搜索各个作用域返回第一个复合条件的结果.
注意:	只有pageContext有findAttribute方法.
 -->

<%
pageContext.setAttribute("n2", 100);
request.setAttribute("n", 200);
session.setAttribute("n", 300);
application.setAttribute("n", 400);
%>
${n}	
<hr/>

<!-- EL表达式中的xxxScope表示直接从对应的作用域范围中提取值.如果没有对应的数据不会继续查找其他的作用域范围 -->
${pageScope.n}
${applicationScope.n}

笔记:
1.pageContext < request < session < application
EL表达式默认情况从小到大依次搜索各个作用域返回第一个复合条件的结果.
注意: 只有pageContext有findAttribute方法.
2.

3.demo3.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here 姓名:

笔记:

4.demo4.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here <% String strname=request.getParameter("name"); out.println(strname); %>

<%=request.getParameter("name") %>

${param.name}
${pageContext.request.contextPath}
${initParam.abc}

笔记:

demo5.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here <% //Cookie cookie=new Cookie("key","value5"); //cookie.setMaxAge(300000); //response.addCookie(cookie);
//Cookie cookies[]=request.getCookies();
//for(Cookie c:cookies){
//	out.println(c.getName()+"  "+c.getValue()+"<br/>");
//}
%>

<%-- El表达式 ${cookie.cookie名.xx属性}直接获取指定cookie的属性值 --%>
${cookie.key.name}
${cookie.key.value}

<!--
使用El表达式在页面上打印一个九九乘法表
要求:	不准使用<%=%>也不准备使用out.println()
 -->

web.xml

abc
123

笔记:
<%-- El表达式 ${cookie.cookie名.xx属性}直接获取指定cookie的属性值 --%>
${cookie.key.name}
${cookie.key.value}

BBS-Demo01
WebContent下
insert.jsp
<%@ page language=“java” import=“com.bbs.pojo.Admin” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here 作者:

login.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here 账号:

密码:

list.jsp
<%@ page language=“java” import=“java.util.*,com.bbs.pojo.Gestbook,com.bbs.util.DateUtil” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here
我要留言

共15条留言 当前2/10页 第一页最 上一页 下一页 后一页


<% ArrayList list=(ArrayList)request.getAttribute("list"); HashMap

src\com\bbs
controller
ListGestBookServlet.java

package com.bbs.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bbs.dao.AdminDao;
import com.bbs.dao.GestbookDao;
import com.bbs.pojo.Gestbook;

public class ListGestBookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private GestbookDao gestBookDao;
private AdminDao adminDao;

public ListGestBookServlet() {
	super();
	this.gestBookDao = new GestbookDao();
	this.adminDao = new AdminDao();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	request.setCharacterEncoding("UTF-8");
	response.setCharacterEncoding("UTF-8");
	response.setContentType("text/html; charset=UTF-8");
	
	ArrayList<Gestbook> list=gestBookDao.getAllGestbook();
	request.setAttribute("list", list);

// HashMap以 aid<==>aname 的形式组织所有的数据保存进来.
HashMap<Integer,String> map=new HashMap<Integer,String>();
for(Gestbook book:list) {
Integer aid=book.getAid();
String aname=adminDao.getNameById(book.getAid());
map.put(aid, aname);
}
request.setAttribute(“map”, map);

	this.getServletContext().getRequestDispatcher("/list.jsp").forward(request, response);
	
}

}

InsertGestBookServlet.java

package com.bbs.controller;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bbs.dao.GestbookDao;
import com.bbs.pojo.Admin;
import com.bbs.pojo.Gestbook;

public class InsertGestBookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private GestbookDao bookDao;

public InsertGestBookServlet() {
	super();
	this.bookDao = new GestbookDao();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	request.setCharacterEncoding("UTF-8");
	response.setCharacterEncoding("UTF-8");
	response.setContentType("text/html; charset=UTF-8");

// 1.获取提交的留言数据
// gst_id 自动增长 default
// aid 会话中提取
// gst_title 表单提交过来
// gst_content 表单提交过来
// gst_time 当前时间 new Date();
// gst_ip 请求对象中包含有request.getRemoteAddr()
Admin admin=(Admin) request.getSession().getAttribute(“logined”);
Integer aid=admin.getAid();
String gst_title=request.getParameter(“gst_title”);
String gst_content=request.getParameter(“gst_content”);
Date gst_time=new Date();
String gst_ip=request.getRemoteAddr();

// 2.组织数据,通过Dao完成添加留言
Gestbook book=new Gestbook(aid, gst_title, gst_content, gst_ip, gst_time);
bookDao.insertGestbook(book);

// 3.返回到ListGestBookServlet重新提取所有浏览,并在list.jsp中显示新添加的数据内容
response.sendRedirect(“ListGestBookServlet”);

}

}

AdminLoginServlet.java

package com.bbs.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bbs.dao.AdminDao;
import com.bbs.pojo.Admin;

public class AdminLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

private AdminDao adminDao;

public AdminLoginServlet() {
	super();
	this.adminDao = new AdminDao();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	request.setCharacterEncoding("UTF-8");
	response.setCharacterEncoding("UTF-8");
	response.setContentType("text/html; charset=UTF-8");

// 1.获取用户提交的信息
String strname = request.getParameter(“aname”);
String strpass = request.getParameter(“password”);

// 2.组织数据信息,调用Dao的业务方法
Admin admin=new Admin(strname,strpass);
Admin result=adminDao.login(admin);

// 3.根据结果返回到对应的页面或者下个Servlet
if(result!=null) {
request.getSession().setAttribute(“logined”, result);
response.sendRedirect(“ListGestBookServlet”);
return;
}
response.sendRedirect(“login.jsp”);
return;
}

}

dao

GestbookDao.java
package com.bbs.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.ArrayList;

import com.bbs.pojo.Gestbook;
import com.bbs.util.C3P0Utils;
import com.bbs.util.DateUtil;

public class GestbookDao {
// 获取所有的数据列表
public ArrayList getAllGestbook(){
ArrayList list=new ArrayList();
String sql=“select * from tab_gestbook”;
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
con = C3P0Utils.getConn();
ps = con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()) {
Gestbook book=new Gestbook();
book.setGst_id(rs.getInt(“gst_id”));
book.setAid(rs.getInt(“aid”));
book.setGst_title(rs.getString(“gst_title”));
book.setGst_content(rs.getString(“gst_content”));
book.setGst_ip(rs.getString(“gst_ip”));
Timestamp temp=rs.getTimestamp(“gst_time”);
book.setGst_time(temp);
list.add(book);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
C3P0Utils.closeJDBC(con, ps, rs);
}
return list;
}

// 添加新的留言信息
public int insertGestbook(Gestbook book) {
int result=0;
String sql=“insert into tab_gestbook values(default,?,?,?,?,?)”;
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
con = C3P0Utils.getConn();
ps = con.prepareStatement(sql);
ps.setInt(1, book.getAid());
ps.setString(2,book.getGst_title());
ps.setString(3, book.getGst_content());
ps.setString(4,DateUtil.getStringByDate(book.getGst_time()));
ps.setString(5, book.getGst_ip());
result=ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
C3P0Utils.closeJDBC(con, ps, rs);
}
return result;
}
}

AdminDao.java
package com.bbs.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.bbs.pojo.Admin;
import com.bbs.util.C3P0Utils;

public class AdminDao {
public Admin login(Admin admin) {
Admin result=null;
String sql=“select aid,aname,password from tab_admin where aname=? and password=?”;
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
con = C3P0Utils.getConn();
ps = con.prepareStatement(sql);
ps.setString(1, admin.getAname());
ps.setString(2, admin.getPassword());
rs=ps.executeQuery();
if(rs.next()) {
result=new Admin();
result.setAid(rs.getInt(“aid”));
result.setAname(rs.getString(“aname”));
result.setPassword(rs.getString(“password”));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
C3P0Utils.closeJDBC(con, ps, rs);
}
return result;
}

public String getNameById(Integer id) {
	String sql="select aname from tab_admin where aid=?";
	String result=null;
	Connection con=null;
	PreparedStatement ps=null;
	ResultSet rs=null;
	try {
		con = C3P0Utils.getConn();
		ps = con.prepareStatement(sql);
		ps.setInt(1, id);
		rs=ps.executeQuery();
		if(rs.next()) {
			result=rs.getString("aname");
		}
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		C3P0Utils.closeJDBC(con, ps, rs);
	}
	return result;
}

}

pojo(entity)
Admin.java
Gestbook.java

util
C3P0Utils.java
package com.bbs.util;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Utils {
static ComboPooledDataSource dataSource = new ComboPooledDataSource(“mysql”);

public static Connection getConn() {
	try {
		Connection conn = dataSource.getConnection();
		return conn;
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return null;
}

public static void closeJDBC(Connection con,Statement st,ResultSet rs) {
	if(rs!=null) {
		try {
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	if(st!=null) {
		try {
			st.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	try {
		if(con!=null && con.isClosed()==false) {
			con.close();
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}
}

}

DateUtil.java
package com.bbs.util;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
public static String getStringByDate(Date date) {
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
return sdf.format(date);
}
}

src
c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?> 10 30 100 10 200
<!--配置连接池mysql -->
<named-config name="mysql">
	<property name="driverClass">com.mysql.jdbc.Driver</property>
	<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
	<property name="user">root</property>
	<property name="password">123</property>
	<property name="initialPoolSize">10</property>
	<property name="maxIdleTime">30</property>
	<property name="maxPoolSize">100</property>
	<property name="minPoolSize">10</property>
	<property name="maxStatements">200</property>
</named-config>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值