JSP
1. JSP概念:java server page,它和servlet一样,也是sun公司推出的一套开发动态web资源的技术,称为jsp/servlet规范,本质是一个servlet .
HTML:只能开发静态资源,不能包含java代码.无法添加动态数据.
Servlet:写java代码,可以输出页面内容,但是很不方便,开发效率极低.
JSP:Html+servlet
2. JSP的执行流程
浏览器-->Tomcat-->应用-->把Demo.jsp文件翻译成Demo_jsp.java-->在编译成Demo_jsp.class-->输出内容到浏览器
3.jsp语法
java代码块---><% %> --->被翻译到demo_jsp.java文件的什么位置: _jspService(request,response){------}
jsp的表达式--><%= %> --->被翻译到demo_jsp.java文件的什么位置: _jspService(request,response){------}-->out.print();
jsp的声明----><%! %> --->被翻译到demo_jsp.java文件的什么位置: _jspService()方法外部
page指令<%@ page %>
属性:import导入包
pageEncoding:指定当前的jsp页面的编码
include指令<%@include file=" " %> 是静态包含:只生成一个.java文件,编译成一个.class文件
taglib指令<%@taglib uri="--" prefix="c"%>
作用是导入第三方的标签库 uri 对应的值是第三方标签库的地址
prefix 对应的第三方标签的前缀<c:if></c:if> <c:forEach></c:fprEach>
5.jsp的内置标签
动态包含<jsp:include page="--">
转发:<jsp:forward page="--">
6.jsp的异常处理
(1)如果是语法错误,在jsp页面找错
(2)如果是500(运行时异常),在_jsp.java文件里找异常
7.jsp中的useBean标签
<jsp:useBean id="" class="" scope=" ">
id对应的值:域对象中的keypageContext.setAttribute("key",new User());
class对应值:包名.类名
scope对应的值:域的范围 page,request,session,application四个里面选一个
8.复制标签<jsp:setProperty>
取值标签<jsp:getProperty>
9.jsp九大隐式对象
ServletContext--------->application
HttpSession ----------->session
HttpServletRequest-->request
HttpServletRequest-->response
JspWrite---------------->out
ServletConfig--------->config
Throwable------------->exception
Object----------------->page
PageContext ------->pageContext
10.jsp四大域对象
pageContext-- request-- session--application
pageContext(1)可以得到其他8个隐式对象
(2)可以操作其他三个域对象
(3)全域查找:范围从小到大page->request->session->application
MVC设计模式
mvc设计模式: 针对表现层
m: model 模型
作用: 封装数据 ,对应包结构 com.baidu.day09.domain
v: view 视图
作用: 显示 ,给用户看的 在WEB-ROOT
c: controller 控制器
作用: 处理浏览器(页面)发送的请求,并且响应内容给页面.
对应的包结构 com.baidu.day09.web.controll
json-lib
json-lib: JSONArray JSONObject 方法:fromObject
JsonConfig setExcludes();//过滤属性参数是被过滤的属性
package com.itheima.json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import org.junit.Test;
import com.itheima.domain.Book;
import com.itheima.domain.BookDB;
import com.itheima.domain.Student;
/**
* Json-lib的使用
* @author zhy
*
*/
public class JsonDemo {
//使用JsonArray对象转json数据格式
//转数组
@Test
public void test1(){
String[] str = {"a","b","c","d"};
JSONArray ja = JSONArray.fromObject(str);
System.out.println(ja);
}
//转list
@Test
public void test2(){
List<String> slist = new ArrayList<String>();
slist.add("aa");
slist.add("bb");
slist.add("cc");
slist.add("dd");
JSONArray ja = JSONArray.fromObject(slist);
System.out.println(ja);
}
//转Map
@Test
public void test3(){
Map<String,String> map = new HashMap<String,String>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
JSONArray ja = JSONArray.fromObject(map);
System.out.println(ja);
}
//使用JSONObject生成json对象
//转Map
@Test
public void test4(){
Map<String,String> map = new HashMap<String,String>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
JSONObject jo = JSONObject.fromObject(map);
System.out.println(jo);
}
//转javabean
@Test
public void test5(){
Student s = new Student("泰斯特","male","22");
JSONObject jo = JSONObject.fromObject(s);
System.out.println(jo);
}
//使用JSONArray转换List<javabean>
@Test
public void test6(){
List<Book> blist = BookDB.findAll();
JSONArray ja = JSONArray.fromObject(blist);
System.out.println(ja);
}
//使用JsonConfig过滤不需要的属性
@Test
public void test7(){
List<Book> blist = BookDB.findAll();
JsonConfig jc = new JsonConfig();//定义一个Json的配置对象
jc.setExcludes(new String[]{"id"});//设置不想显示的属性名称
JSONArray ja = JSONArray.fromObject(blist,jc);//在转换时,需要把jc传给JSONArray
System.out.println(ja);
}
}