1.HTML
<form action=”跳转页面” method=”post(或get)”>
<input type=”如下” id=”” name=”” value=””/>
文本框(text) 隐藏输入(hidden) 密码(password)
按钮(button) 提交(submit) 重置(reset) ---------对form表单内的数据进行操作
复选框(checkbox) 单选框(radio) ---name(同名为同一组) checked:设置选中
<textarea name=”” cols=”行数” rows=”列数” /> 文本域
<select> <option value=”1”>1 <option value=”2” selected>2 </select> --下拉框
</form>
1.5.HTML5
<input type=”text” pattern=”[0-9]{10}” required/> pattern正则表达式 required必填项
新增 邮箱(email) 地址(url) 数字(number) 日期(date)
2.JavaScript
外挂式<script src=”js/jquery.js”></script>
嵌入式<script type="text/javascript"> JS代码 </script>
JS变量类型 仅用var定义变量 变量类型由赋值语句隐含确定
函数类型 function 函数名(参数)
提示框 alert() 确认对话框confirm() 提示对话框prompt(提示信息,默认值)
引用html中的对象 通过name 如:var username=document.myform.username.value;
通过id 如:var username=document.getElementById(“username”).value;
2.5.JS正则表达式
var exp = new RegExp(pattern); 或者 var exp=/正则表达式/;
方法:boolean test(String) 返回true或者false
元字符 | 描述 | 元字符 | 描述 |
\d | 数字,即[0-9] | [0-9] | 0-9中任意一个数字 |
\D | 非数字,即[^0-9] | [^a-m2-5] | 不包含a-m字符和2-5数字 |
\w | 字母、数字和_ | {m, n} | 最少m个, 最多n个, {n}, {n,} |
\W | 非字母、数字和_ | . | 除换行符外的任意字符 |
\s | 空格 | ? | 0个或1个 |
\S | 非空格 | * | 0个或多个 |
\t | tab符 | + | 1个或多个 |
\n | 换行符 | ^ | 行首匹配 |
\r | 回车符 | $ | 行尾匹配 |
\符号 | 正则表达式符号本身: ! $ ^ * + = | . ? \ / ( ) [ ] { } | | | he|she, he或she中的一个 |
[a-zA-Z] | a-z或A-Z任意一个字符 | () | 分组, 括号内所有字符看做一个字符处理 |
邮编 /^\d{6}$/ 手机号码 /^1[3|4|5|8][0-9]\d{4,8}$/
邮箱 /^([a-zA-Z0-9_-])+@[a-zA-Z0-9_-]+((\.[a-z]{2,8}){1,2})$/
电话号码 /^((0[1-9][0-9]-)?[1-9][0-9]{7}|(0[1-9][0-9]{2}-)?([1-9][0-9]{6,7})))$/
例子
<form method="post" action="Login">
用户名<input type="text" name="username" id="username">
<span id=”error”></span>
密码 <input type="password" name="password" id="password">
<input type=”submit” value=”提交” οnclick=”return checkusername()”>
<input type=”reset” value=”重置”>
</form>
//<script src=”jquery.js”> 使用Jquery用法
<script type="text/javascript">
function checkusername()
{
var regex=/^[0-9a-zA-Z]+$/; 只允许数字和字母
var s=document.getElementById("username").value; //var s = $(‘#username’).val();
if(regex.test(s)){
document.getElementById("error").innerHTML=""; // $(‘#username’).text(“”);
return true;
}else{
document.getElementById("error").innerHTML="用户名只能填写数字与英文字母";
return false;
}
}
</script>
3.JSP
常见Servlet容器 Tomcat、Jboss、Glassfish、Weblogic、Websphere
指定编码集:UTF-8
Tomcat目录
bin:命令目录(启动关闭等) conf:配置文件 lib:jar包 logs:日志目录
Websapp:默认的web应用程序存放位置 work:将Jsp文件转化为Servlet的目录
Server.xml:定义了Tomcat体系接口,设置端口8080,集群,Web应用,访问日志等
将站点放到Tomcat之外的路径
在Tomcat目录/conf/Catalina/localhost下新建test.xml
<?xml version=”1.0” enconding=”utf-8”>
<Context path=”/test” docBase=”e:/test” reloadable=”true”>
</Context>
JSP:JSP(全称Java Server Pages)一种使软件开发者可以响应客户端请求,而动态生成Web网页的技术标准。jsp里可以写java代码,其本质是一个servlet。
JSP作用:可以有效地控制动态内容生成,将内容与表示分离,实现了HTML语法中的java扩展
JSP优点:内容与表示分离,支持可重用的基于组件的设计,使基于Web的应用程序开发变得迅速和容易.
转译:从 JSP 元素中提取数据. 编译:为 JSP 生成一个 Servlet.
Jsp页面元素
1.静态内容--HTML静态文本
2.指令--以"<%@ " 开始,以"%> " 结束。比如:<%@ include file = "Filename" %>
<%@ page pageEncoding="UTF-8" isErrorPage="false" errorPage="error.jsp"%>
3.表达式--<%=Java表达式 %> 比如:<%=Hello(朋友)%>
4.Scriptlet--<% Java 代码 %> 比如:<% Calendar now= Calendar.getInstance(); %>
5.声 明--<%! 函数或方法 %> 比如:<%!
String getHello(String name) { 声明---全局
return "Hi," + name + "!";
} %>
6.动作--以"<jsp: 动作名 " 开始,以"</jsp:动作名>" 结束,比如:<jsp:include page="Filename" />
7.注释--<!-- 客户端可见 -->,<%-- 客户端不可见 --%>
JSP 9大对象:
1.运用输入/输出对象:request、response 和 out
2.运用作用域通信对象:session、application和pageContext
3.Servlet 相关对象:page 和 config
4.错误对象:exception
JSP 定义的作用域包括 page、request、session 和 application
Requset常用方法
1.String getParameter(String name)
2.String[] getParameterValues (String name)
3.void setAttribute(String name, Object value)
4.Object getAttribute(String name)----获取后一般进行强制转换
5.Post-----request.setCharacterEncoding("UTF-8"); get不用转换
Response常用方法
1.response.setContentType("text/html;charset=utf-8");设置作为响应生成的内容的类型和字符编码
2.response.sendRedirect("response2.jsp"); 重定向
页面跳转的区别
| 请求重定向 | 请求转发 |
区别 | response.sendRedirect(), 客户端行为.从本质上讲等同于两次请求,前一次的请求对象不会保存. 地址栏的URL地址会改变 | request.getRequestDispatcher().forward(req,resp); 服务器行为,是一次请求,转发后请求对象会保存. 地址栏的URL地址不会改变
|
4. Servlet
1.什么是servlet?与jsp有什么区别?
Servlet是一种(比JSP更早的)动态网页编程技术。
Servlet是服务器端的程序,动态生成html页面发送到客户端,但是这样程序里会有很多out.println(),java与html语言混在一起很乱,所以后来sun公司推出了JSP.其实JSP就是Servlet,每次运行的时候JSP都首先被编译成servlet文件,然后再被编译成.class文件运行。有了jsp,在MVC项目中servlet不再负责动态生成页面,转而去负责控制程序逻辑的作用,控制jsp与javabean之间的流转。
2.Servlet中doGet和doPost的区别与使用
提交方式:<form action="inputForm"method="get">
区别:get方式提交的数据有大小的限制,post方式没有数据大小的限制;通过Get方式提交的数据安全性不高,而Post方式的更加安全(get方式地址栏中会暴露信息)
3.Servlet的分类:
1.load-on-startup servlet:开启web应用时启动
2.一般servlet:相应用户请求时启动
4.简单servlet结构(会写):
public class ClientServlet extends HttpServlet
{
protected void doGet(HttpServletRequest
request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out= response.getWriter();
out.println("<html><body> 您好!</body></html>");
}
}
4.5. Filter
1.什么是过滤器?过滤器的用途?
过滤器是JavaWeb的三大组件之一,它与Servlet很相似,不过过滤器是用来拦截请求的,而不是处理请求的。过滤器是向 Web 应用程序的请求和响应处理添加功能的Web 服务组件。
可以统一的集中处理请求和响应、可以实现对请求数据的过滤。
2.过滤器链
在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链,FilterChain 接口用于调用过滤器链中的一系列过滤器。
3.Filter结构
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
@WebFilter("/*")
public class LoggerFilter implements Filter
{
private FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void destroy() { }
public void doFilter(ServletRequest request,
ServletResponse response,FilterChain filterChain) {
//代码段
chain.doFilter(request, response);
}
}
5. JDBC
常用几个类的名称
1.Drivermanager:会用DriverManager的getConnection( )
a. Class.forName(“com.mysql.jdbc.Driver”);//注册驱动
b.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序
c. String url = “jdbc:mysq l://localhost:3306/mydb1”;
d. String username = “root”;
e. String password = “123”;
f. Connection con = DriverManager.getConnection(url, username,password);
g.class.forName(“com.microsoft.jdbc.sqlserver.SQLserverdriver”);
dbUrl=”jdbc:microsoft:sqlserver://localhost:1433;databasename=student”;
2.Connection
Connection最为重要的方法就是获取Statement:
Statement stmt = con.createStatement();//创建对象
ResultSet r=stmt.executeQuery(“SELECT name FROM books WHERE price>20”);//执行查询语句
3.Statement
(1) int executeUpdate(String sql):执行更新操作,即执行insert、update、delete语句
(2) ResultSetexecuteQuery(String sql):执行查询操作,执行查询操作会返回ResultSet,即结果集。
(3)PreparedStatement pstmt=conn.prepareStatement(“SELECT * FROM student WHERE name=?”);//创建一个PreparedStatement对象
(4)ResultSet r=pstmt.executeQuery();//执行查询语句
(5)CallableStatement cstmt=conn.prepareCall(“{callQuery(?)}”);//创建CallableStatement对象
(6)Result r=catmt.executeQuery();//执行存储过程
5.5. JDBC连接池
1.什么是连接池?用途是什么?
所谓数据库连接池,可以看作 :在用户和数据库之间创建一个”池”,这个池中有若干个连接对象,当用户想要连接数据库,就要先从连接池中获取连接对象,然后操作数据库。一旦连接池中的连接对象被拿光了,下一个想要操作数据库的用户必须等待,等待其他用户释放连接对象,把它放回连接池中,这时候等待的用户才能获取连接对象,从而操作数据库。 其用途:(1)建立数据库连接池对象(服务器启动).
(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
2.常见的数据库连接池:
Apache软件基金组织提供:DBCP连接池;
Web服务器自带:Tomcat(5.5以后)、web Logic、WebSpere;
其他开源提供:C3P0、Proxool、阿里druid;
框架提供:Hibernate、MyBatis;
6. AJAX
1.什么是AJAX?用途?好处?目的?
(Asynchronous JavaScript And XML)AJAX并不是一门新的语言或技术,实际上是几项技术按一定的方式组合在一起的综合应用。一种创建交互式网页应用的网页开发技术。
用途:google suggest、google maps、 Gmail(在不刷新页面的情况下访问服务器处理数据,并根据数据的处理结果按你想要的方式对页面作出即时更改)
好处:(1)无刷新更新数据 (2)异步与服务器通信 (3)前端和后端负载平衡 (4)基于标准被广泛支持 (5)界面与应用分离
目的:Web页面不用打断交互流程,实现动态更新。可以创建接近本地桌面应用的,直接的、高可用的、更丰富的、更动态的Web用户接口界面。把以前的一些服务器负担的工作转嫁到客户端,有效利于客户端闲置的处理能力。
2.AJAX的关键对象,重置参数,属性,方法
(1)关键对象
XMLHTTPRequest对象,完成数据层面的交换, 不用每次都刷新界面也不用每次将数据处理的工作提交给服务器来做
(2)参数(不是重点)
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。
type: 要求为String类型的参数,请求方式(post或get)默认为get。
timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。
async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。
data: 要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。
dataType: 要求为String类型的参数,预期服务器返回的数据类型。
error:要求为Function类型的参数,请求失败时被调用的函数。
(3)属性
onreadystatechange: 状态改变的事件触发器(设置回调方法)
readyState: 对象状态(integer):
0 = 未初始化 1 = 读取中 2 = 已读取
3 = 交互中 4 = 完成
Status: 服务器返回的状态码 如:404 ="文件未找到"、200 ="成功"
responseText: 服务器进程返回数据的字符串形式
responseXML: 服务器进程返回数据的兼容DOM的XML文档对象
(4)方法
open("method","URL"[,asyncFlag[,"userName"[, "password"]]]):设置未决的请求的目标URL, 方法, 和其他参数
send(content):发送请求,get模式下为null,post模式下要自己拼接参数串
3.发送方式(代码)
function getResult()
{ var url = "ajaxServlet"; //test.jsp
if (window.XMLHttpRequest)
{ req = new XMLHttpRequest(); }
else if (window.ActiveXObject)
{ req = new ActiveXObject("Microsoft.XMLHTTP"); }
if(req)
{ req.open("POST",url,true);
req.onreadystatechange = complete;//设置回调方法
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.send("user=aa&pass=bb"); //post方法发送 }
}
4.返回方式(代码)
回调函数:服务器处理完成,返回客户端调用该方法继续处理。
function complete()
{ if (req.readyState == 4) //状态码为4表示对象返回完成
{ if (req.status == 200) //返回成功
{ //获取返回xml格式数据
//var xmlArray = req.responseXML.getElementsByTagName("type_name");
var result=req.responseText; //获取文本格式数据
//后续处理........ }
}
}
5.文件上传
只能用post方式,以二进制流的方式上传 例子如下:
<form action="upload.jsp" method="post" enctype="multipart/form-data">
上传的图片:<input type="file" name="pic">
<input type="submit" value="上传">
</form>
7. 分页
1.什么是分页?为啥要分页?
分页技术:将所有数据分段展示给用户的技术。
2.分页的几种方式
1)使用缓存结果集,一次查询所有数据:查询得到所有数据缓存到session或状态bean中,翻页时从缓存中取,不再访问数据库,可减少数据库连接数。(缺点:数据可能过期,Web/数据库服务器负荷大)
2)使用游标定位,丢弃不属于页面的数据:查询得到所有数据,使用游标定位结果集中对应行数,并取回,其他数据丢弃。(缺点:浪费内存,适用数据量小)
3)使用数据库提供的定位集的SQL语句,返回特定行数据
3.分页的SQL脚本
MySQL数据库:
select * from tablename limit 开始位置,每页行数(下标从0开始)
eg:每页10条记录,求第五页 limit 40,10
SQL Sever数据库:
SELECT top 10 * FROM student where 主键字段 not in
(select top (当前页数-1)*每页行数 主键字段 from student where xxx=yyy order by 主键字段) where xxx=yyy order by 主键字段(下划线部分为若有额外附加条件,需要在内外层都添加)
8. Spring
1.什么是Spring?
Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。Spring是一个框架,简单、可测试和松耦合。
2.Spring有什么特点?
·轻量级(Lightweight):Spring 核心包容量不到1MB的大小,可以在很多小型设备中使用Spring。
·非侵入性(No intrusive):增强应用程序组件的可重用性,减少对框架的依赖。
·容器(Container):根据配置文件自动生成对象及属性等,不用编写任何代码来产生对象。
·Inversion of Control(IOC)与Dependency Injection(DI):不必自己在程序代码中维护对象的依赖关系,只需在配置文件中加以设定,Spring 核心容器会自动根据配置将依赖注入指定的对象。
·AOP(Aspect-oriented programming):基于代理及拦截器的机制,与Spring IOC 结合,采用运行时Weaving方式在Spring框架的应用程序中使用各种声明式系统级服务。
·持久层(Persistent):Spring提供DAO、编程事务与声明式事务,对于ORM工具(Hibernate、iBATIS)的整合及使用上简化。
·JavaEE服务:可以使用JavaEE标准规范提供的各项服务(JNDI、Mail、任务计划Scheduling、远程Remoting),并无缝结合。
3.Spring实例(会写)
Sample.java
public class Sample {
public int compute(int i, int j) {
return i + j;
}
}
ApplicationContext.xml(src目录下)
<?xml version="1.0" encoding="UTF-8"?>
<beans ……
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="sample" class="cn.edu.xupt.spring.Sample" />
< /beans>
public class ClientTest {
public static void main(String[] args) {
//1.获取BeanFactory
BeanFactory beanFactory = new ClassPathXmlApplicationContext("applicationContext.xml"); //2.从容器中获取Sample对象
Sample sample = (Sample)beanFactory.getBean("sample");
//3.调用Sample对象的方法
int result = sample.compute(3,4);
System.out.println(result);
}
}
8.5. SpringMVC
1.什么是SpringMvc?
SpringMvc是spring的一个模块,基于MVC的一个框架,无需中间整合层来整合。
2.SpringMvc有什么好处?
代码简洁,相互耦合性低,维护难度低,但相对开发周期被拖长。
3.两个重要注解
@Controller: 控制器。
@RequestMapping(“/user”): 映射路径