JDBC:java数据库连接技术( java DateBase Connectivity ),能实现java程序对各种数据库的访问。由一组使用java语言编写的类和接口(JDBC PAI)组成,它们位于java.sql以及javax.sal中
String sql = "select id,stu_id,name from student where id = ?";
PreparedStatement pstmt = ConnectionManager.getConnection().prepareStatement(sql);
pstmt.setInt(1,1); //这个方法主要是给你上面那个sql语句里面的未知参数(也就是'?')设置值,同样的还有setString之类的
ResultSet rs = pstmt.executeQuery(); //PreparedStatement 他调用executeQuery()方法,并返回一个结果集
//说白了就是跟数据库某一张具体的表产生交互,并获得其中的数据,获得该数据的结果集
连接mysql数据库:
MySQL的URL: jdbc:mysql://localhost:3306/test
解析:
jdbc:mysql:// 是指JDBC连接方式;
localhost: 是指你的本机地址;
3306 SQL数据库的端口号;
test 就是你要连接的数据库的名称。
2.Servlet
2.1 web.xml配置:
客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。
<servlet>元素用于注册Servlet,它包含有两个主要的子元素:
<servlet-name> 设置Servlet的注册名称
<servlet-class> 设置 Servlet的完整类名
<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:
<servlet-name> 指定Servlet的注册名称
<url-pattern> 指定 Servlet的对外访问路径
同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是"*.扩展名",另一种格式是以正斜杠(/)开头并以"/*"结尾。 例如:<url-pattern>*.do</url-pattern>和<url-pattern>/action/*</url-pattern>
2.2 Servlet生命周期及方法:
2.2.1 Servlet生命周期的三个关键方法,init、service、destroy。还有另外两个方法,一个getServletConfig()方法来获取ServletConfig对象,ServletConfig对象可以获取到Servlet的一些信息,ServletName、ServletContext、InitParameter、InitParameterNames
2.2.2 讲解四大类,ServletConfig对象,ServletContext对象、request对象,response对象:
① ServletConfig对象:
获取途径:getServletConfig();
getServletName(); //获取servlet的名称,也就是我们在web.xml中配置的servlet-name
getServletContext(); //获取ServletContext对象,该对象的作用看下面讲解
getInitParameter(String); //获取在servlet中初始化参数的值。这里注意与全局初始化参数的区分。这个获取的只是在该servlet下的初始化参数
getInitParameterNames(); //获取在Servlet中所有初始化参数的名字,也就是key值,可以通过key值,来找到各个初始化参数的value值。注意返回的是枚举类型
② ServletContext对象:
获取途径:getServletContext(); 、getServletConfig().getServletContext();
setAttribute(String name, Object obj) 在web项目范围内存放内容,以便让在web项目中所有的servlet读能访问到
getAttribute(String name) 通过指定名称获得内容
removeAttribute(String name) 通过指定名称移除内容
getInitPatameter(String name) //通过指定名称获取初始化值
getInitParameterNames() //获得枚举类型 .
③ request对象
request就是将请求文本封装而成的对象,所以通过request能获得请求文本中的所有内容,请求头、请求体、请求行
④ response对象
2.2.3 Servlet中代码:
String uname=request.getParameter("uName");
String msg="用户名或者密码错误!";
request.setAttribute("msg", msg); //在request对象中加入名为xiaoliuyang的属性并附值为msg
//类似session,但与session是有所区别的,request.setAttribute设置的属性只能在当前request只使用,比如你在Action中设置result属性,需要到jsp页面中读取:
request.setAttribute("result",username);
requests.getRequestDispatcher("result.jsp").forward(request, response);
//jsp页面获取该值:
request.getAttribute( "result");
return super.execute(); //是返回父类调用execute()方法的值
request.getRequestDispatcher("index.jsp").forward(request, response);
3. JSP:
3.1 jsp标准通用属性:
属性 | 值 | 描述 |
id |
| 规定元素的唯一 id |
| 规定元素的类名(classname) | |
style |
| 规定元素的行内样式 |
... | ... | HTML5 不支持 <frameset> 标签 |
URL | 规定在框架中显示的文档的 URL | |
noresize | 规定无法调整框架的大小 | |
yes | 规定是否在框架中显示滚动条 | |
name | 规定框架的名称 |
input中name和id的区别:
name主要是表单元素里才有的属性。通过js的document.表单名称.文本框.value来获取文本框的值,其中的表单名称和文本框名称指的是name,而非表单元素例如div,span等是没有name属性的;
而id属性是任何一个HTML元素都会有的。当你需要用js获取非表单元素 对象是就得用document.getElementByIdx("id")
3.2 index.jsp~登录页面
<head>
……
<script type="text/javascript">
function login(){
var msg2=document.getElementById("msg1").value;
if(msg2.length>0){
alert(msg2);
document.getElementById("msg1").value="";
}
}
</script>
</head>
<body onload="login();"> <!—-->
<form action="doLogin.action" method="post"> <!—-->
<table border="1" align="center" width="30%"> <!—-->
<tr>
<td>用户名:</td>
<td>
<input type="text" name="uName"/> <!—name属性值取自servlet中-->
<input id="msg1" type="hidden" name="msg-no" value="${msg}"/>
</td> <!—value值取自servlet中request.setAttribute("xiaoliuyang", msg);-->
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name="passWd"/></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="登录"/></td>
</tr>
</table>
</form>
</body>
3.3 main.jsp~首页
<head>
……
<frameset rows="25%,*"> <!—src结果从web.xml中的url-pattern元素中获取-->
<frame src="toTop.action" noresize="noresize" scrolling="no" />
<frameset cols="25%,*">
<frame src="toLeft.action" noresize="noresize" scrolling="no"/>
<frame src="toRight.action" name="right"/>
</frameset>
</frameset>
</head>
1.首先确定 Form表单数据的两种提交方式(也是HTTP请求方法):
GET - 从指定的服务器中获取数据
POST - 提交数据给指定的服务器处理
get:表单数据会被encodeURIComponent后以参数的形式:name1=value1&name2=value2 附带在url?后面,再发送给服务器,并在url中显示出来。
post:enctype 默认"application/x-www-form-urlencoded"对表单数据进行编码,数据以键值对在http请求体重发送给服务器;如果enctype 属性为"multipart/form-data",则以消息的形式发送给服务器。
2.确定POST方式提交后,再确定HTTP传输主体body的数据格式
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据。
HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。
2.1 服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。
Content-Type字段:服务器端主要根据请求头(header)中的Content-Type属性来自动获取请求主体采用的是何种编码,再对消息主体进行解析。
常见四种contentType(Post提交数据时四种常见的数据格式):
Aplication/x-www-form-urlencoded:form表单不指定enctype时的默认属性(最常见的 POST 提交数据的方式)
multipart/form-data:在我们采用form表单上传文件时,必须让form的enctyped等于这个值。
application/json:告诉服务端消息的主体是序列化后的 JSON 字符串。可以支持复杂的结构化数据。
text/xml
3.java 前端--form表单4中提交方式:
通过type=submit提交
js提交form表单
ajax异步提交表单数据
button按钮