栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

前端-JSP,基本使用、内置对象、页面访问、数据库连接、中文乱码问题解决、本页数据刷新等

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

前端-JSP,基本使用、内置对象、页面访问、数据库连接、中文乱码问题解决、本页数据刷新等

拿出来大家共勉,不足之处请指正。
很久之前的学习笔记了,一直存放在本地中

文章目录
  • 页面基本结构
    • HTML元素
    • 注释
    • 脚本元素
    • 指令
    • 动作
  • JSP内置对象
    • 页面访问过程
    • 内置对象定义
      • request对象
      • response对象
      • page对象
      • pageContext对象
      • out对象
      • session对象
      • application对象
      • config对象
      • exception对象
  • JDBC
    • dbutil.jsp
      • 数据库连接
      • 中文乱码
      • 本页面数据更新

页面基本结构 HTML元素 注释
<%--JSP注释内容在中间,用户在客户端看不到又叫隐藏注释--%>

脚本元素
  • 声明<%! %>

    Java程序段中声明的变量是局部变量,该局部变量在JSP页面后继的所有程序段及表达式中均有效。这些局部变量互不影响(变量是线程安全的),即一个用户改变Java程序段中的局部变量值,不会影响其他用户的Java程序段中的局部变量

<%!
int add(int opt1, int opt2)
{
  return opt1+ opt2;   
}
%>
  • 表达式<%=%>
<%=
上边的是个整体,表达式后不需要加分号
%>
  • 脚本片断(java程序段)<%%>
<%

%>
指令
  • page指令(<%@page %>)

此指令位置不固定(通常是顶部),除import属性外,其他属性只能出现一次。

 <%@
	page language="java" (目前只能说java,是jsp页面脚本语言的名称)
	contentType="MIMETpye;
	charset=characterSet"
   pageEncoding=“characterSet”*UTF-8或者GBK
   import=“package.class”*具体引入的Class
   extends="package.class"定义此JSP页面产生的Servlet是继承自哪个父类
   buffer="none|size kb|8kb" 设定输出流缓存的大小,默认为8kb
   errorPage=“URL” 指定该JSP页面发生错误时,网页被重定向指向的错误处理页面
   autoFlush="false|true"指定输出流缓存区的内容是否自动清除,默认为true
   session=“false|true”*,指定该JSP页面是否需要一个HTTP会话,默认为true
   isThreadSafe="false|true"指定该JSP页面是否支持多个用户同时请求(即多线程同步请求),默认为true
   isErrorPage="true|false"  指定该JSP页面是否为错误处理页面,默认为false
   isELIgnored="true|false"   指定是否忽略EL表达式,默认为false
  %>
  • taglib指令(<%@taglib%>)

指定该标该jsp页面使用了自定义标签,使得页面更加个性化

<%@ taglib uri="tagURI" prefix="prefix" %>

uri:指定自定义标签文件的路径,可以是绝对或者相对路径,也可以是~**标签库~**的描述文件。
<%@ taglib prefix='fmt' uri="http://java.sun.com/jsp/jstl/fmt" %>  

prefix:指定自定义标签的前缀,注意前缀名称不能使用保留字,如java,javax,jsp,servlet,sun等
  • include指令(<%@include%>)

页面包含指令,包含的另一个文件(HTMLJSP普通文件)

<%@ include file="url" %>
url是指根目录下的相对路径
动作
  • jsp:useBean
  • jsp:forward
  • jsp:include
JSP内置对象

页面访问过程

1、在浏览器地址栏输入访问资源的位置,统一资源定位(URL).
2、浏览器根据URL对URL所在的服务器发起一次http请求,http报文分为请求行(Request line)、请求首部(header)、空行(blankline)、请求数据(Body)。
3、web服务器根据请求编译相应的jsp页面为class类型文件并执行程序,这是动态过程。
4、将运行的结果封装为response对象返回给客户端。

内置对象定义

不需要声明这些对象就可以在JSP页面中直接使用的对象

request对象

一般请求的为url或者表单,方法method为postget

response对象

一个HTTP响应报文包括

  • 状态行Status Line(由三位数字组成) 第一个数字定义响应类表

1XX:请求被接收到,继续处理;
2XX:被成功地接收;200;

3XX:重发,为了完成请求必须采取下一步动作;
4XX:客户端出错403,404
5XX:服务器端出错。500(语法错误,运行异常RuntimeException)

  • 响应头(Header)
  • 空行(Blank Line)
  • 可选实体内容(数据Body)

reponse.sendRedirect("abc.jsp")
page对象

page对象代表当前正在运行的JSP页面,或者可以认为page代表的是JSP页面被编译后的Servlet,相当于Java语言中的Object类。

pageContext对象

代表当前页面的上下文,即当前页面的所有属性和对象。

out对象

输出各种类型(文本文件)的数据,也可以输出HTML标签和JavaScript脚本

<%
	out.print("xxx");
	out.print("
"); %>
session对象

利用session对象实现储存

product.jsp

西游记
加入购物车

//每个后面的Bookid不同

product_action.jsp

  • 接收参数
  • 业务逻辑处理
  • 跳转到目标JSP页面
<%
	String bookid=request.getParameter("bookid");
%>
<%
	Listbooks=null;
	books=(List)session.getAttribute("books");
//判断这个bookid是否已经存在
	if(books!=null){
		boolean flag=false;
		for(int i=0;i();
	books.add(bookid);
}
//将集合重新绑定到session对象的books属性
session.setAttribute("books",books);
%>

<%
	//使用response对象的重定向
	response.sendRedirect("product.jsp")
%>

cart.jsp

在这个页面进行内容显示

进行遍历

<%
	Listbooks=(List)session.getAttribute("books");
	for(int i=0;books!=null&&books.size();i++){
	
  • <%=(i+1) %><%=books.get(i) %>
  • }%>
    application对象

    生存期要比session对象要长,WEB服务器从启动到终止

    利用此对象实现页面点击次数的计数

    <%
    	Object number=application.getAttribute("count");
    	int num=1;
    	if(number==null){
    		application.setAttribute("count",num);
    }
    else{
    	num=(Integer)number;
    	num++;
    	applicatiom.setAttribute("count",num);
    }
    %>
    访问次数:<%=num %> 
    config对象

    config对象主要用于读取Web应用的初始化参数,在Java
    Web应用中,一般使用web.xml配置文件存储Web应用的配置信息。

    exception对象

    主要用来处理JSP页面执行时产生的异常

    JDBC dbutil.jsp
    
        <%! String url="jdbc:mysql://127.0.0.1:3306/userdb";
            String user="root";
            String password="123";
         %>
    数据库的连接
         <%!
             Connection getConn()throws Exception{
                  Connection conn=null;
                 try{
                     //1:加载驱动
                      Class.forName("com.mysql.jdbc.Driver");
                      conn=DriverManager.getConnection(url, user, password);
                      return conn;
                 }catch(Exception e){
                    e.printStackTrace();
                    throw e;
                  }
             }
          %>
    对数据库进行操作(可以在navicat中进行)
         <%
          String sql1="insert into tb_users(fd_username,fd_password)values('B"+System.currentTimeMillis()+"','123')";
    		  String sql2="insert into tb_users(fd_username,fd_password)values(?,?)";
    		  
    		  int row1=0,row2=0;
    		  try{
    		   Statement stmt=getConn().createStatement();
    		   row1=stmt.executeUpdate(sql1);
    		   PreparedStatement pstmt=getConn().prepareStatement(sql2);
    		   //设置动态参数对应的值
    		   pstmt.setString(1, "C"+System.currentTimeMillis());
    		   pstmt.setString(2, "C"+System.currentTimeMillis());
    		   row2=pstmt.executeUpdate();
    		  }catch(Exception e){
    		     e.printStackTrace();
    		  }   
           %>
          插入记录数: <%=(row1+row2) %>
      
    
    数据库连接
    String url = "jdbc:mysql://127.0.0.1:3306/midterm?characterEncoding=utf8&useSSL=false";
        String user = "root";
        String pwd = "123456";
    
        public Connection getconn() throws Exception {
            Connection conn = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection(url, user, pwd);
                return conn;
    
            } catch (Exception e) {
                e.printStackTrace();
                throw e;
            }
        }
    
        public void close(ResultSet rs, Statement stmt, Connection conn) {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (stmt!=null){
                    stmt.close();
                }
                if (conn!=null){
                    conn.close();
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    中文乱码
    public String toUtf8(String content) throws UnsupportedEncodingException {
            if (Objects.isNull(content)) {
                return "";
            }
            return new String(content.getBytes("ISO-8859-1"), "UTF-8");
        }
    
    本页面数据更新
    try {
                    String action = request.getParameter("action");
                    Connection conn = null;
                    Statement stmt = null;
                    ResultSet rs = null;
                    conn = getconn();
                    stmt = conn.createStatement();
                    if ("save".equals(action)) {
                        String leave_id = request.getParameter("leave_id");
                        String opinion = request.getParameter("opinion");
                        String status = request.getParameter("status");
                        String updSql = "update sys_leave set status = " + status + ",opinion = '" + toUtf8(opinion) + "' WHERe 1=1 " + "and leave_id = '" + leave_id + "'";
                        stmt.executeUpdate(updSql);
                    }
                    String listSql = "SELECT * FROM sys_leave WHERe 1=1";
                    rs = stmt.executeQuery(listSql);
                    while (rs.next()) {
            
                
                    
                
                
                
                    ');
                            var status = myselect.options[myselect.selectedIndex].value;
                            var opinion = document.getElementById('opinion<%=rs.getString("leave_id")%>').value;
                            window.location.href='./leave_inst.jsp?action=save&leave_id=<%=rs.getString("leave_id")%>&opinion='+opinion+'&status='+status;return false;"
                    >
                
            
     }
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
    
            }
    
    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/831101.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号