前端三大件部分
1、a标签的target属性==iframe标签的name属性
2、textarea标签:表示多行文本输入。起始标签和结束标签中的内容是默认值。
rows:属性设置可以显示多少行。
cols:属性设置每行显示多少列。
3、form表单的action提交的时候,是根据form表单的name属性提交的。否则后端服务器无法接收的属性值的键值对。name属性必须。
4、如果是单选或者是多选框,如果想要提交的服务器,需要存在value属性才可以。
5、组合选择器 #abc,class01,class02{}
6、函数中的参数属性
function sum(val1,val2){
var res = 0;
for(var i=0;i<arguments.length;i++){
res+=arguments[i];
}
return res;
}
alert(sum(1,2,3,4,"abc",5,6,7,8,9)); 返回 10abc59789
7、判断参数类型
function sum(val1,val2){
var res = 0;
for(var i=0;i<arguments.length;i++){
if(typeof(arguments[i]) == "number"){
res += arguments[i];
}
}
return res;
}
8、js获取当前节点的父节点的下一个兄弟元素
$(this).parentNode.nextSibing;
//如果只想是获取元素节点
$(this).parnentNode.nextElementSibling;
上一个兄弟节点:previousSibling
10、body标签的对象,页面一加载的时候是没有的,需要加载完成后才有
window.onload = function(){
var divObj = document.createElement("div");
divObj.innerHTML = "pshdhx";
document.body.appendChild(divObj);
}
11、prop和attr的区别
attr:针对于是否有值或者是属性,attr返回属性值和undefined
prot:针对于是否有值或者是属性,prop返回true和false
12、jquery的函数
toggleClass("className") 有就删除,没有就添加样式;
offset({top: xxxx,left: xxxx}) 获取和设置元素的坐标;
div.show(1000毫秒,callback)
fadeIn 慢慢显示 fadeOut 慢慢消失
fadeTo:在指定的时长内,慢慢的将透明度修改到0.0就是不可见,1就是完全可见。
$(document).ready(function(){
}) ==============
$(function(){
//浏览器内核解析完成标签,加载完成dom对象后,就执行这个函数。
如果有多个,会依次执行
})
window.onload = function(){
//执行这个要慢一点,除了要完成解析的标签,dom对象,还要解析完成标签的内容。
}
$("#div1").one("click",function(){
//这个只会执行一次
})
$("#div").live("click",function(){})
$("#div").on("click",function(){})
都是对动态添加的元素,绑定属性值。
13、事件的冒泡:
点击子元素,也会触发父元素的点击事件。解决:return false;
Tomcat
1、启动方式:到bin目录下,执行命令: catalina run
2、到conf/Catalina/localhost/abc.xml
<Context path="/abc" docBase="E:\book" />
Context表示一个工程的上下文
path表示工程的访问路径 : /abc
docBase 表示工程目录在哪里
Servlet
servlet是规范,在api中就是接口。J2EE的三大组件【servlet、Filter、Listener】之一,用来接收请求和响应请求。
ServletConfig作用:获取web.xml中的配置属性【获取servlet别名、初始化参数init-param、和获取servletContext对象】。
servlet初始化:
public void init(ServletConfig servletConfig){
<init-param>
<param-name></param-name>
<param-value></param-value>
</init-param>
}
servlet是程序第一次访问时,创建的。servletConfig是每个servlet程序创建时的就创建的对象。
getServletConfig()方法可以直接使用 extends HttpServlet
ServletConfig
ServeltConfig是一个接口,标识servlet上下文
一个web工程,只要一个serveltContext对象的实例。
serveltContext是一个域对象(就是可以存储map值的对象)。
getServletConfig().getServletContext();可以直接使用。
我们可以直接set、get、removeAttribute方法
作用:
1、获取web.xml中上下文的参数context-param
2、获取当前的工程路径 String path = getServeltContext().getRealPath("/")
3、获取工程部署后在服务器硬盘上的绝对路径。
4、可以像map一样存储键值对。
Http协议
协议?是指双方或多方相互约定好,大家都要遵守的规则,叫做协议。
所谓Http协议:客户端与服务器之间通信时,发送的数据,需要遵守的规则。
Http协议中的数据:报文。
HttpServletRequest类
在doGet和doPost方法里边
通过该类的对象,获取该次请求的所有信息。
String username = req.getParameter("username");
String[] hobby = req.getParameter("hobby");
System.out.println("兴趣爱好:"+ Arrays.asList(hobby));
解决请求乱码
post请求,如果出现了中文,则会出现???这样的乱码
解决方式:在方法的第一行
req.setCharacterEncoding("UTF-8");
在获取请求参数之前,设置才有效,否则无效。
请求转发
服务器接收到请求之后,从一个资源跳转到另外一个资源。就是从一个servlet跳转到另外一个servlet,用户收到的最终的结果。
req.getRequestDispatcher("/servlet2")
请求转发的特点:
1、浏览器的地址栏没有发生任何变化。
2、他们是一次请求,所以共享request域中的所有信息。
3、可以转发到web-info的目录下,浏览器是无法直接进入到/web-info/form.html中的。
4、不可以访问外部地址,因为url的地址栏中,是带着工程路径名称的
req.getRequestDispatcher("a/b/c.html").forward(req,resp);
当点击正常跳转的url地址是:/07_servelt/a/b/c.html
在Servlet中跳转的时候url地址栏是:07_servlet/forwardC,相对路径参照的地址变了。
可以在head中设置一个base值
<base href="http://localhost:8080/07_sevlet">
web中的绝对路径:http://ip:port/工程名/资源路径
/ : 该符号被浏览器解析,代表http://ip:port
/ : 该符号被服务器解析,代表http://ip:port/工程路径
1、url-pattern servlet1
2、servetContext.getRealPath("/")
3、req.getRequestDispatcher("/")
输出流
1、getOutputStream()字节流,通常用于下载,传递二进制数据
2、getWriter() 字符流,回传字符串
二者只能使用一个。
往客户端回传数据:
resp.getWriter().write("response content");
响应字符中文乱码的解决
resp.getCharacterEncoding(); //ISO-8859-1
resp.setCharacterEncoding("UTF-8");
但是,设置了服务器的响应字符集还不行,需要设置浏览器的字符集为Unicode
通过响应头设置浏览器也是utf-8的字符集
resp.setHeader("content-type","text/html;charset=utf-8");
或者是
resp.setContextType("text/html;charset=utf-8");
它会同时设置服务器和客户端都是用该字符集,还设置了响应头。
注意点:此方法一定要在获取流对象之前调用才有效。
请求重定向
指的是,给服务器发送的请求,服务器告诉客户端,给你个新地址,你去重定向,因为之前的响应地址可能被废弃。
特点:
1、浏览器地址栏发生了变化
2、接口请求了两次
3、不同享request域中的信息,tomcat是收到了两次请求。
4、不能进入到web-info目录下,该目录是受保护的,第二次请求相当于是从浏览器过去的,所以无法访问。
5、可以访问工程以外的资源
resp.sendRedirect("http://localhost:8080")