首页 > 代码库 > JAVA 笔记no.3

JAVA 笔记no.3

1.JDBC访问数据库的流程(写出过程)

  1)注册驱动

    //JDBC连接串

private static final String CONN_URL = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&useSSL=false";

private static final String USERNAME = "root";

    private static final String PWD = "13585589602qxh";

Connection conn = null;

    Class.forName("com.mysql.jdbc.Driver");  //在类路径中查找驱动入口点类

  2)建立连接(Connection

   conn = DriverManager.getConnection(CONN_URL,USERNAME,PWD);

  3)创建数据库操作对象(PreparedStatement)用于执行SQL语句

  4)执行SQL语句

  5)处理执行结果(ResultSet

  6)释放资源

    public static void releaseRes(Connection conn,PreparedStatement pstmt,ResultSet rset){

 

try {

if(rset!=null) rset.close();

if(pstmt!=null) pstmt.close();

if(conn!=null) conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

        }

 

2.说明连接池是什么及其作用

  

 

3.编程题(30分):写一个完整的网页(web工程),如添加操作

  (网页到servletserviceDaomysql;需要用到sql语句;JDBC的存盘,即保存数据;JSP表单验证

  1)表单验证

    <script type="text/javascript">

    function checkFrm(){

      var frm = document.forms[0];

      var stuno = frm.stuno.value;

      if(stuno.length!=4){

        alert("学生学号长度必须是4位字符!");

        frm.stuno.select();

        return false;

      }

      var stumark = frm.stumark.value;

      if(isNaN(stumark)){

        alert("学生成绩不是一个有效成绩!");

        frm.stumark.select();

        return false;

      }

      var mark = parseFloat(stumark);

      if(mark<0 || mark>100){

        alert("学生成绩必须在0-100之间!");

        frm.stumark.select();

        return false;

      }

    }

  </script>

  2JDBC存盘

   private static final String ADD_STU = "insert into student values(?,?,?,?,?)";

  public void regStu(Student stu) {

Connection conn = DBUtils.getConn();

PreparedStatement pstmt = null;

try {

pstmt = conn.prepareStatement(ADD_STU);

pstmt.setString(1, stu.getStuNo());

pstmt.setString(2, stu.getStuName());

pstmt.setString(3, stu.getStuSex());

pstmt.setDouble(4, stu.getStuMark());

//[a,b,c] -> a|b|c

StringBuffer sb = new StringBuffer();

for(String hobby:stu.getStuHobbies())

sb.append(hobby).append("|");

sb.deleteCharAt(sb.length()-1);

pstmt.setString(5, sb.toString());

pstmt.executeUpdate();

 

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

if(e.getMessage().contains("Duplicate entry"))

throw new SmsException("该学号["+stu.getStuNo()+"]已存在,注册失败!");

}finally{

DBUtils.releaseRes(conn, pstmt, null);

}

}

4.JSP转译生成的java类属于什么样的包

  JSP转译后会生成一个同名的java文件、一个同名的class文件,位于D:\apache-tomcat-8.5.6\work\Catalina\localhost\sms\org\apache\jsp中。

 

5.JSP页面中JSP语法以什么为基础

  xml为基础。

 

6.说明JSPservlet间的关系

  JSP是变相的servlet

  1JSP页面调用servlet

   ①通过表单:<form action=”servlet 访问地址”>……</form>

   ②通过超链接:<a herf=”servlet 访问地址+?要传递的参数)>……</a>

  2servlet跳转到JSP页面:

   ①转向:request.requestDispatcher(“load_student.jsp”).forword(request,response);

   ②重定向:response.sendRedicret(“load_student.jsp”);

  3servlet调用另一个servlet

   同(2servlet跳转到JSP页面

  4JSP跳转到另一个JSP<jsp:forword page=”load_student.jsp”></jsp:forword>

 

7.说明servlet两种协作方式及其特点

  1forword协作(转递请求)页面的路径是相对路径。只能跳转到本web应用中的页面上。跳转后浏览器地址栏不会变化。服务器在向客户端发送数据之前,是先将数据输出到缓冲区,然后将缓冲区中数据发送给客户端。

  2include协作(包含响应内容):把另一个servlet处理过后的内容拿过来,包括自身的处理结果都会返回给浏览器。

 

8.说明过滤器、过滤器链

  1)过滤器:能够对servlet容器的请求和响应对象进行检查和修改。

  2)过滤器链:串联的几个过滤器加上资源(resource)形成一个过滤器链。

JAVA 笔记no.3