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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值