Javaweb、javaEE学习笔记基础知识 下

简介: JSP(java Server page)Java服务器页面1、 Servlet:看做是嵌入HTML标签的类(数据的控制)JSP:看做是嵌入Java代码的HTML(数据的显示)2、 JSP的工作原理:当页面第一次被请求时,把Java代码转换成Servlet,然后响应回去,之后请求,如果页面没有变化,直接响应就可以,如果Servlet发生变化,再请求时,重新转换成Servlet,然后再响应

JSP(java Server page)Java服务器页面


1、 Servlet:看做是嵌入HTML标签的类(数据的控制)


JSP:看做是嵌入Java代码的HTML(数据的显示)


2、 JSP的工作原理:


当页面第一次被请求时,把Java代码转换成Servlet,然后响应回去,之后请求,如果页面没有变化,直接响应就可以,如果Servlet发生变化,再请求时,重新转换成Servlet,然后再响应


3、 JSP转换将文件放在Tomcat的work文件下


4、 JSP的经典语法:


注释:<%-- --%>浏览器不可见


 <!-- -->查看源文件,浏览器可见


声明:<%! %>声明方法和成员变量


脚本段:<% %>句子和局部变量,如if循环语句


表达式:<%= score %>输出到浏览器,等价于<%out.println();%>


指令:<%@ %>


迭代语句:跨脚本段 遇到Java代码跳入脚本段,遇到HTML标签跳出脚本段


普通语句


<%


int score=12;


if(score==100){


 out.println("<h1><font color=\"red\">去公园玩</font></h1>");


}else{


 out.println("<h1><font color=\"blue\">在家反省</font></h1>");


}


%>


迭代语句


<%


int score=100;


if(score==100){


%>


<h1><font color="red">去公园玩</font></h1>


<%


}


else{


%>


<h1><font color="blue">在家反省</font></h1>


<%} %>


5、page指令  设置当前页面的信息


language:语言


contentType:设置当前页面的编码格式,默认为ISO-8859-1


pageEncoding:设置当前页面的编码格式,默认为ISO-8859-1


import:导包 可以出现多次,如果写在一个import中,中间用逗号间隔


session:当前页面是否有session对象,默认为true


extends:JSP页面生成的Servlet类的父类


buffer:表示缓冲器大小,默认8kb


autoFlush:默认为true是否自动刷新缓冲区


isThreadSafe:是否是线程安全的,默认为true


isELIgnored:默认为false不忽略,是否忽略EL表达式


isErrorPage:默认为false,页面是否为错误页面


errorPage:后面跟错误页面的URL路径


<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8" buffer="1kb" import="java.sql.Connection"

autoFlush="false" isELIgnored="false"%>


6、include指令


 include指令(静态包含)与include动作(动态包含)的区别


 include指令:只转换成一个Servlet,转换成Servlet时就包含进来,不可以使用表达式


 <%@include file=”header.jsp”%>


 include动作:转换成多个Servlet,响应时包含进来,可以使用表达式


 <jsp:include page=”<%=header.jsp%>”></jsp:include>


7、taglib指令JSP三个指令:page、include、taglib


8、JNDI:数据库连接池


在web应用下的META-INF下新建context.xml配置文件


<?xml version=”1.0” encoding=”UTF-8”?>//告诉我们是一个xml文件


<Context>


<Resourse  name=”jdbc/mysourse”    


auth=”Container”



  type=”javax.sql.DataSourse”


  driverClassName=”oracle.jdbc.driver.OracleDriver”


  url=” jdbc:oracle:thin:@YLMF123-3131857:1521:orcl”


  username=”scott”


  password=”tiger”


  maxActive=”30”


  maxIdle=”5”


  maxWait=”10000”


/>


</Context>


//name表示Resourse资源的JNDI的名字


//auth表示这个资源的管理者Application(web应用创建和管理Resourse)、Container

(容器创建和管理Resourse)


//type表示Resourse所属的Java类


//maxActive数据库在此服务器上打开的最大连接数


//maxIdle数据库在此服务器上打开的最小连接数


//maxWait最大的等待时间,毫秒


使用:


Context context=new InitialContext();

DataSource ds=(DataSource)context.lookup("java:comp/env/jdbc/mysource");


conn=ds.getConnection();


9、jsp下的转发


<jsp:forword></ jsp:forword>


10、jsp的9个内置对象


1)request       HttpServletRequest


request.getAttribute(“”);

request.getParameter(“”);

2)response      HttpServletResponse


response.sendRedirect(“”);


response.encodeURL(“”);


response.getWriter();


3)session       HttpSession


 session.setAttribute(“”);


4)application  ServletContext


 application.setAttribute(“”,””);


 application.getAttribute(“”);


5)config        ServletConfig


 config.getInitParameter(“”);


6)out 默认值为null         JspWriter


7)page 默认值为this,指的是当前Servlet       Object    


 8)exception    Throwable是一个类,与exception是继承关系


 9)pageContext PageContext


  pageContext:

1) 产生其他内置对象


2) 存储page作用域范围内的数据,以及其他作用域(request、session、

application)范围内的数据


10、JSP四个领域范围(作用域范围)


1)page:当前页面有效


2)request:同一请求范围内有效


3)session:同一会话范围内有效


4)application:web应用范围内有效


11、JavaBean:是一种规范,是一种可移植的组件


12、成为JavaBean的规范


1)必须是公开类


2)必须是无参的构造方法


3)属性xxx必须是getXxx或者SetXxx命名


4)实现Serializable接口


5)该bean放在某个包中(前三个条件必须满足)


程序如下:


public class Users implements Serializable{
private int id;
private String username123;
private String password;
public int getId() {
 return id;
}
public void setId(int id) {
 this.id = id;
}
public String getUsername() {
 return username123;
}
public void setUsername(String username) {
 this.username123 = username;
}
public String getPassword() {
 return password;
}
public void setPassword(String password) {
 this.password = password;
}
 }


13、用jsp对bean进行赋值和输出


<jsp:useBean>相当于new一个对象


<jsp:setProperty>赋值


<jsp:getProperty>取值


程序如下:


<body>
<jsp:useBean id="u" class="com.neusoft.bean.Users" scope="session"></jsp:useBean>
<jsp:setProperty property="*" name="u" />


//属性的名字应与表单域中的name相同,可以用*通配符


//否则用以下代码


<jsp:setProperty property="id" name="u" param="id"/>//相当于u.setId(12);
<jsp:setProperty property="username" name="u"  param="name"/>
<jsp:setProperty property="password" name="u"  param="pwd"/>
Id:<jsp:getProperty property="id" name="u"/><br/><!-- u.getId() -->
Name:<jsp:getProperty property="username" name="u"/><br>
Password:<jsp:getProperty property="password" name="u"/>
</body>


14、EL表达式:通常与JSTL一起使用


1)语法:${} 花括号里面可以使用.或者[]


如:${requestScope.user.id }


2)有些情况必须使用[]:数组、List集合、Map集合、变量中有特殊字符(如na$me需要

用[“na$me”])


数组:${requestScope.arr[1] }<br>


List集合:${requestScope.list[0].username }<br>


Map集合:${requestScope.map["m2"].password}


3)el的隐含语法:


<%=request.getParameter("name") %>//取表单域的值


${param.name }//取表单域的值


${header.host }//获得报头信息,主机名字


${cookie }//获得cookie


4)运算符:+、-、*、/(div)、%(mod)


${18 div 10} //输出1


${2==4} //false  


${2<4 && 5>3} //true


15、JSTL(JSP Standard Tag Library)标签库


1)导包:


在WEB-INF的lib导入standard-1.1.2.jar包(现成的)


在jar包下的META-INF的c.tld找到uid路径,复制粘贴到


<%@taglib uri=”复制” prefix=”c”%>


2)out 标签 输出


<body>


<jsp:useBean id="user" class="com.neusoft.el.User" scope="request">


</jsp:useBean>


<jsp:setProperty property="id" name="user" value="12"/>


<jsp:setProperty property="username" name="user" value="abc"/>


<jsp:setProperty property="password" name="user" value="123"/>


<!-- out标签 -->


<c:out value="admin"></c:out>


EL表达式:${requestScope.user.password }


out标签:<c:out value="${requestScope.user.password }"></c:out>


default属性:<c:out value="${name}" default="qqq"></c:out>


//value对象存在,即输出,不存在即返回default设置的默认值


<%


String str="<address>";//xml标签


request.setAttribute("str", str);


%>


//是否屏蔽xml标签,默认值为true,即屏蔽


escapeXml标签:<c:out value="${str }"   escapeXml="false"></c:out>


</body>


3)set标签 声明变量


<c:set var=”u” value=”guest” scope=”session”></c:set>


Set标签:${sessionScope.u}//输出guest


//针对JavaBean的属性,target指的是JavaBean的id


<c:set target=”${user}” property=”username” value=”John”></c:set>


${user.username}


4)remove标签 删除


<c:remove var=”u”>


5)if标签 判断,只能放一条if语句


<c:set var=”age” value=”2300” scope=”request”></c:set>


<c:if test=”{${age<0 || age>200}”>年龄不合法</c:if>


6)choose标签 多条件判断


<c:choose>


<c:when test=”${age<0 || age>250}”>年龄不合法</c:when>


<c:when test=”${age<50 || age>250}”>中年人</c:when>


<c:otherwise>老年人</c:otherwise>


</c:choose>


7)forEach标签 遍历数组、集合


//item:集合的名字



//var:遍历集合是所遍历到的元素的名字


//begin=“1” end=“4”部分遍历


//step 步长值 默认为1


//varStatus 状态值变量 index下标 count第几个元素


<!—遍历数组 -->


<c:forEach items=”${arr}” var=”item” varStatus=”aa”>


${item}||${aa.index}||${aa.count}||${aa.first}||${aa.last}


</c:forEach>


<!-- 遍历List集合 -->


<c:forEach items=”${list}” var=”item”>


${item.id}||${item.username}//list集合里面是user对象


</c:forEach>


<!-- 遍历Map集合 -->


<c:forEach>


${item.key}||${item.value.username}//value是user对象


</c:forEach>



16、MVC架构模式(可重用性、可维护性)


发送请求,Servlet(属于控制层)负责处理请求,jsp只负责显示(属于View视图层),

JavaBean负责逻辑部分


M(JavaBean):数据的逻辑,与数据库的交互逻辑(dao层和service层)


V(jsp):数据的显示


C(Servlet):数据的控制


a. 处理请求


b. 根据请求,找到某个业务逻辑处理


c. 根据业务逻辑的结果,找到某个视图响应回去




Ajax(Asynchronous JavaScript And XML)


1、步骤


var xmlhttp;


function val{


1)获取表单数据


var username = document.getElementsByName(“username”)[0];//得到一个数组



2)创建XMLHttpRequest对象


if(window.XMLHttpRequest){//除了ie7以下版本,浏览器中都有XMLHttpRequest对

象,如火狐、搜狗等


xmlhttp  = new XMLHeepRequest();


}else if(window.ActiveXObject){//ie6,ie6.5


xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);


}


3)建立与服务器的连接


if(xmlhttp){//判断是否创建成功


xmlhttp.onreadystatechange = callback;//注意后面不加括号,设置状态变化时调用

callback方法


xmlhttp.open(“GET”,”GetServlet?,true);


//method:提交方式,URL:提交到的目标页面,async:是否异步(true表示异步)


//POST方式提交


xmlhttp.open(“POST”,”POSTServlet”,true);


xmlhttp.setRequestHeader(“Content-Type”);


xmlhttp.send(“username=”+username.value);


4)发送请求


xmlhttp.send(null);


}

}


5)编写回调函数,用于存储服务器响应回来的数据


function callback(){


if(xmlhttp.readystate==4){


if(xmlhttp.status==200){


var text = xmlhttp.responseText;//获取服务器的数据


  var s = document.getElementById(“s”);


  s.innerHTML = “<font color=red>”+text+”</font>”;


}


}


}


2、XML可扩展的标记性语言


格式良好的XML文件


1) 大小写敏感


2) 标签要求正确嵌套


3) 属性值必须被“”修饰


4) 标签必须成对出现


5) 必须要有根元素<?xml version=”1.0”?>


3、DOM(Document Object Model):文档对象模型


目录
相关文章
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
405 37
|
1月前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
31 2
|
1月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
45 5
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
99 2
|
1月前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
33 0
|
1月前
|
Java 程序员 开发工具
java学习笔记
java学习笔记
34 0
|
2月前
|
SQL JSON JavaScript
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
Vue 指令、生命周期、this和$、vue脚手架进行模块化开发/ElementUI框架、综合案例,element商品列表展示增删改查
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统