JSP、servlet、Tomcat

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-10 20:26:24

jsp动作:<jsp:include page="" flush=“true”>
jsp指令:<%@include file=“a.jsp”%>

动作是在页面被访问时导入的,指令是在编译时导入的;
在指令中会编译为一个servlet类文件,在动作中会分为两个所以效率稍慢;


<jsp:forward page="" >
跳转后,地址栏不变;
page只能是web应用中的文件;


jsp指令:page、include、taglib
jsp动作:include、forward、param等等

JSP元素可以分为三大类:JSP指令元素、JSP动作元素、JSP脚本元素。
一、JSP指令元素仅仅是在“翻译”阶段使用的,即把JSP翻译成Servlet。


jsp内置对象:request、response、session、application、out、page、config;

request:
request.getRemoteAddress()获取用户IP
request.getParameter(“name”)获取参数
request.setCharacterEncoding(“utf-8”)
请求头:
accept:客户端能接收的MIME类型
accept-language:浏览器的首选语言
user-agent:客户端程序的相关信息;浏览器版本、系统版本等;
host:服务器的主机号和端口号;
ua-cpu:CPU类型
connection:判断客户是否可以持续性地连接HTTP
accept-encoding:客户端能处理的编码类型;
cookies:会话信息

response:
response.sendRedirect(url)设置页面重定向


servlet生命周期:初始化(init())、运行、消亡
JSP和servlet的区别:
1、servlet是Java代码、jsp是页面代码;
2、servlet的运行速度更快;
3、servlet需要手动编译,jsp由服务器自动编译


JSP有四个作用域

1:page (其作用域在当前页面,操作只在当前页面有效);

2:request (它代表用户的请求,从发送HTTP请求到服务器,一直到服务器返回数据被称为一个完整的用户请求 “也叫请求周期”,在此过程中用户可能通过forward方式跳转多个页面,而放入request中的变量可以在 跳转的页面间随意使用);

3:session (当一个用户进入浏览器页面时,被称为一个会话的开始,当用户关闭浏览器离开,标志着一个会话的结 束。session就是用来存放服务器查询出来的数据,用户可以在自己的这个会话中随意获取session中的数 据);

4:application(放在application中的变量在整个应用中都有效,与前三个作用域不同的是,它是不分用户的,就是说如 果一个用户在application中添加了变量,那么其它用户同样可以获取该变量,它是全局性的);


EL标签:${ 参数名 }
作用:
1、访问jsp中不同域的对象;
2、访问javabean中的属性;
3、访问集合元素;
4、支持简单的运算符操作;

pageContext.setAttribute("name","ben");
request.setAttribute("name","ben");
session.setAttribute("name","ben");
application.setAttribute("name","ben");

${pageScope.name}
${requestScope.name}
${sessionScope.name}
${applicationScope.name}

算数运算符:加减乘除、求模%
逻辑运算符:and && or || not !
关系运算符:eq == ne != lt < gt > le <= ge >=

pageContext变量:用于取得其他相关用户的请求或页面的详细信息,等同于jsp中的PageContext对象;
${pageContext.request.requestURL}取得请求的URL
${pageContext.request.contextPath}取得服务应用的名称
${pageContext.request.method}取得HTTP的提交方法
${pageContext.request.protocol}取得使用的协议
${pageContext.request.remoteUser}取得登录用户名称
${pageContext.request.remoteAddr}取得登录用户IP
${pageContext.session.new}判断session是否为新的会员
${pageContext.session.id}判断session的ID号


JDBC(java database connectivity)是java访问数据库的一种规范,一组标准的java接口和类

try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://127.0.0.1:3306/test";
//通过DriverManager获取连接
Connection conn=DriverManager.getConnection(url,"root","hello");
System.out.println("conn:"+conn);
//准备操作数据库
//Statement:用于执行静态SQL语句并返回它所生产结果的对象
Statement stm=conn.createStatement();
String sql="insert into test.new_table(t1,t2) values('t11','t22');";
Boolean ret =stm.execute(sql);
conn.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
 

package com.wzh.JDBC;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
/*
 * 连接工厂
 * 从面向对象的角度来说,凡是连接相关操作都给这个对象处理
 */
public class ConnectionFactory {
 
    private static final String URL="jdbc:mysql://127.0.0.1:3306/test";
    private static final String USER="root";
    private static final String PASSWORD="hello";
    private static final String DRIVER="com.mysql.jdbc.Driver";
     
    /**
     * 获取数据库连接
     * @return 成功返回 java.sql.Connection
     *                    失败返回NULL
     * */
    public static Connection GetConnection(){
        try {
            Class.forName(DRIVER);
            return DriverManager.getConnection(URL,USER,PASSWORD);
        } catch (Exception e) {
            System.out.println("%%%%%%%%%%%% 获取连接错误  %%%%%%%%%%%%%%");
            e.printStackTrace();
            return null;
        }
    }
     
    /**
     * 关闭数据库资源
     * @param conn
     * @param stm
     * @param rs
     */
    public static void Close(Connection conn,Statement stm,ResultSet rs)
    {
        try {
            if(conn!=null) conn.close();
            if(stm!=null) stm.close();
            if(rs!=null) rs.close();
        } catch (Exception e) {
            System.out.println("%%%%%%%%%%%% 关闭连接错误  %%%%%%%%%%%%%%");
            e.printStackTrace();
        }
         
    }
}
Statement 用法:
Connection conn=null;
        Statement stm=null;
        ResultSet rs=null;
        try {
            //加载驱动
            
            conn= ConnectionFactory.GetConnection();
            System.out.println("conn:"+conn);
            //准备操作数据库
            //Statement:用于执行静态SQL语句并返回它所生产结果的对象
            stm=conn.createStatement();
            String sql="select * from new_table";
            rs =stm.executeQuery(sql);
            while(rs.next()){
                System.out.println(rs.getString("t1"));
                System.out.println(rs.getBoolean("boo"));
            }
            System.out.println(rs);
            conn.close();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        finally{
            ConnectionFactory.Close(conn, stm, rs);            
        }
PreparedStatement 用法:

Connection conn=null;
        PreparedStatement stm=null;
        ResultSet rs=null;
        try {
            //加载驱动
            conn= ConnectionFactory.GetConnection();
            System.out.println("conn:"+conn);
            //准备操作数据库
            //Statement:用于执行静态SQL语句并返回它所生产结果的对象
            String sql="select * from new_table where t1=? and t2=?";
            stm=conn.prepareStatement(sql);
            stm.setString(1, "1");
            stm.setString(2, "aa");
            System.out.println("sql:"+sql);
            rs =stm.executeQuery();
            
            while(rs.next()){
                System.out.println(rs.getString("t1"));
                System.out.println(rs.getBoolean("boo"));
            }
            System.out.println(rs);
            conn.close();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        finally{
            ConnectionFactory.Close(conn, stm, rs);            
        }

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!