2020-10-21 JDBC+Servlet+JSP小记

it2024-12-06  13

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

class

 

规定元素的类名(classname)

style

 

规定元素的行内样式

......

HTML5 不支持 <frameset> 标签

src

URL

规定在框架中显示的文档的 URL

noresize

noresize

规定无法调整框架的大小

scrolling

yes no auto

规定是否在框架中显示滚动条

name

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按钮

最新回复(0)