web开发一直很火,是很好的就业和职业发展方向。
包含的技术特别多,而且每一种技术包含的东西也特别多。很容易遗忘,但是也必须掌握。
HTML
CSS
JAVASCRIPT
JQUERY
BOM
DOM
XML
SESSION
COOKIE
servlet request response filter
jsp
ajax
mysql jdbc hibernate mybatis
structs2
spring
html :
列表、超链接、表格、br hr 空格 img href frameset/frame
JS:
<scripttype="text/javascript">
CODE
</script>
CODE:
var a =1;
document.write("变量a="+a);//在网页上输出的
CSS :就是为一些组件设置样式,有三种选择器,里面有各种选项的设置。
<style type="text/css">
font{
font-size:20px;
}
</style>
<font >冠希 / 阿娇</font>
div{
font-family:"黑体";
font-size:3cm;
color:black;
}
.cc{
font-size:2cm;
color:"green"
}
#div1{
color:red;
font-family:"宋体";
}
div/类选择器/标签
<divid="div1">阿娇我想你了</div>
<div>芙蓉姐姐我想你了</div>
<spanid="div1" class="cc">aaaa</span><span>bbbbb</span>
a:hover{ | ||
color:yellow; | ||
} | ||
a:active{ | ||
color:green; | ||
font-size:2cm; | ||
} | ||
font-style:italic; | ||
font-weight:bold; | ||
font-size:36px; | ||
font-family:"宋体" |
text-indent:6em;
text-align:right;
还有定位、重叠……………………
BOM
Browser Object Model 浏览对象模型
Window:
Location:
History:
Document:
Navigator:
Screen:
DOM document.
键盘事件
<input type="text"id="keyinfo" οnkeydοwn="appendKey()"οnkeypress="keypress()" οnkeyup="keyup()" />
提交事件
<form action="01modal.html"method="post" οnsubmit="return chk()">
</form>
onchange事件
<select id="province" οnchange="changCity()">
</select>
05dom结点信息
alert(document.getElementById("h1").innerHTML);
06dom取值
var bjNode
bjNode.childNodes;
var t
t.nodeName
t.nodeValue
07option文本
<select name="edu" id="edu">
<optionvalue="本科">本科^^</option>
</select>
var eduNode =document.getElementsByTagName("option");
eduNode[i].innerHTML
^^^^…………………………………………
SAXParser parser
XMLReader reader
XMLReader.setContentHandler(ContentHandlerhandler)
reader.parse("src/books.xml");
SAXReader reader = new SAXReader();
Document document =reader.read("src/exam.xml")
//2.找根
Element root = document.getRootElement();
//3.由找到的根结点,去添加student子结点
Element studentEle =root.addElement("student");
//4.给student结点添加属性
studentEle.addAttribute("idcard",stu.getIdcard());
studentEle.addAttribute("examid",stu.getExamid());
//5.student结点添加内部子结点
studentEle.addElement("name").setText(stu.getName());
studentEle.addElement("location").setText(stu.getLocation());
studentEle.addElement("grade").setText(stu.getGrade()+"");
//6.写回数据
Dom4jUtil.writeDocument2Xml(document);
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar
它需要jar包。
importorg.dom4j.Document;
importorg.dom4j.io.OutputFormat;
importorg.dom4j.io.SAXReader;
importorg.dom4j.io.XMLWriter;
遍历和删除就略了。已经明白了它是干什么的,根据oop的思想,很容易推断代码的意义。根据面试的条件,百度就行,记得亲自测试一遍。
servlet
day07_00_servlet\WebRoot\WEB-INF\web.xml
建立一个servlet(服务器),并且提供一种访问:
public class ServletDemo1extends GenericServlet {
public voidservice(ServletRequest arg0, ServletResponse arg1)
throwsServletException, IOException {
}
}
注意顺序:
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>com.itheima.servlet.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/servlet/ServletDemo1</url-pattern>
</servlet-mapping>
servlet本质是socket类,可以读本地资源、req是socket(input);res是(inputstream)。
req,获取参数:
res,向网页写:
例子:
response.getWriter().write("ServletDemo3");
OutputStream os =response.getOutputStream();
os.write(buffer,0,len);
String remoteAddr =request.getRemoteAddr();//得到客户端的IP
Stringmethod = request.getMethod();//得到发送请求的方式
String localAddr =request.getLocalAddr();//本机的IP
StringBuffer sb = request.getRequestURL();//协议+主机+资源
Stringuri=request.getRequestURI();//资源
//重定向 特点1地址发生必变,2其实是对服务器做了2次请求 3.放在request域中的数据在重定向页面中不能取
response.sendRedirect("/day08_00_response/1.html");
Form请求:
<formaction="/day08_01_requestform/servlet/ParamServletDemo1"method="post">
</form>
使用jar获取参数:
day08_01_requestform\WebRoot\WEB-INF\lib\commons-beanutils-1.8.3.jar
commons-beanutils-1.8.3.jar
commons-logging-1.1.1.jar
<url-pattern>/servlet/ParamServletDemo1</url-pattern>
姓名:<input type="text" name="name"/><br/>
com.itheima.domain.Student
private String name;
public String getName()
public voidsetName(String name)
BeanUtils.populate(newStudent(), request.getParameterMap());
//转发
request.setAttribute("user","cgx");
//request.removeAttribute("user");
request.getRequestDispatcher("/servlet/ForwardDemo2").forward(request,response);
<url-pattern>/servlet/ForwardDemo2</url-pattern>
String user =(String)request.getAttribute("user");
System.out.println("yes1");//out
估计每个servlet都有自己的一个输出页面。getRequestDispatcher将新开一个页面,把原页面的内容覆盖了。
response.getWriter().write("yes2");//?不输出
request.getRequestDispatcher("/servlet/ForwardDemo2").forward(request,response);
System.out.println("no1");//out
response.getWriter().write("no2");//?不输出
将输出包含了进来。
response.setContentType("text/html;charset=UTF-8");
//以源资源为主
response.getWriter().write("hello,");
RequestDispatcher rd =request.getRequestDispatcher("/servlet/IncludeDemo2");
//包含只会将目标资源中响应正文内容包含进来
rd.include(request,response);
response.getWriter().write("helloend");
重定向:
response.sendRedirect("/day08_02_forward/servlet/RedirectDemo2");
Cookie
CookiecookieTime = new Cookie("mycookieTime",System.currentTimeMillis()+"");
cookieTime.setMaxAge(Integer.MAX_VALUE);
response.addCookie(cookieTime);
Cookie[] cookies = request.getCookies();
for(int i=0;cookies!=null&&i<cookies.length;i++){
Cookiec = cookies[i];
if("mycookieTime".equals(c.getName())){
//取值 54645657564
Stringtime = c.getValue();
//3.设置setMaxAge(0)
c.setMaxAge(0);//就是删除
c.setPath(request.getContextPath());//设置路径,这样可以使得当前应用下的Servlet都能用
http://blog.csdn.net/fangaoxin/article/details/6952954
客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。
Cookie具有不可跨域名性。根据Cookie规范,浏览器访问Google只会携带Google的Cookie,而不会携带Baidu的Cookie。Google也只能操作Google的Cookie,而不能操作Baidu的Cookie。
maxAge为负数的Cookie,为临时性Cookie,不会被持久化,不会被写到Cookie文件中。。Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为–1。
如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除,
要想修改Cookie只能使用一个同名的Cookie来覆盖原来的Cookie,达到修改的目的。
servlet:
public class ServletDemo1 extends HttpServlet
voidcom.itheima.servlet.ServletDemo1..
voidcom.itheima.servlet.ServletDemo1.doPost(
filter
FilterDemo1implements Filter
Filter例子:
public voiddoFilter(ServletRequest request, ServletResponse response.
System.out.println("FilterDemo1前");
chain.doFilter(request,response);//放行。让目标执行
System.out.println("FilterDemo1后");
FilterDemo2implements Filter
xml配置:
<filter>
<filter-name>FilterDemo1</filter-name>
<filter-class>com.itheima.filter.FilterDemo1</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterDemo1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>FilterDemo2</filter-name>
<filter-class>com.itheima.filter.FilterDemo2</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterDemo2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
out:
FilterDemo1前
FilterDemo2前
ServletDemo1执行了
FilterDemo2后
FilterDemo1后
console:
FilterDemo1前
ServletDemo1执行了
FilterDemo1后
Filter的原理是什么?