zoukankan      html  css  js  c++  java
  • web | jsp考试复习要点整理

    很烦,不想学这个东西,但是没有办法,还是得过的。

    jsp

    Author@Mz1

    原理

    编译原理

    1. 解析jsp
    2. jsp->servlet
    3. 编译servlet

    基本语法

    常规声明操作

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    

    导入基本库

    <%@ page import = "java.util.*"%>
    <%@ page import = "java.io.*"%>
    

    语法&声明

    <% 代码片段 %>
    <jsp:scriptlet>
       代码片段
    </jsp:scriptlet>
    
    声明:
    <%! 声明片段 %>
    <jsp:declaration>
       代码片段
    </jsp:declaration>
    

    输出

    <% out.println("Your IP address is " + request.getRemoteAddr()); %>
    <%= (new java.util.Date()).toLocaleString()%>
    

    注释

    <%-- jsp注释--%>
    <% //注释 %>
    <!-- html注释 -->
    

    指令

    基本语法格式:<%@ directive attribute="value" %>
    <%@ page ... %> //定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
    	等价于:<jsp:directive.page attribute="value" />
    <%@ include ... %> // 	包含其他文件
    	<%@ include file="./mod/GradeClass.jsp" %>      //文件包含
    	等价于:<jsp:directive.include file="文件相对 url 地址" />
    <%@ taglib ... %> //引入标签库的定义,可以是自定义标签
    

    行为

    <jsp:action_name attribute="value" />
    语法	描述
    jsp:include	用于在当前页面中包含静态或动态资源
    	<jsp:include page="相对 URL 地址" flush="true" />
    
    jsp:useBean	寻找和初始化一个JavaBean组件
    	<jsp:useBean id="name" class="package.class" />
    
        <jsp:useBean id="myName" ... />
        ...
        <jsp:setProperty name="myName" property="someProperty" .../>
    
        <jsp:useBean id="myName" ... >
        ...
           <jsp:setProperty name="myName" property="someProperty" .../>
        </jsp:useBean>
    
    	<jsp:useBean id="myName" ... />
        ...
        <jsp:getProperty name="myName" property="someProperty" .../>
    
    
    jsp:setProperty	设置 JavaBean组件的值
    jsp:getProperty	将 JavaBean组件的值插入到 output中
    jsp:forward	从一个JSP文件向另一个文件传递一个包含用户请求的request对象
    jsp:plugin	用于在生成的HTML页面中包含Applet和JavaBean对象
    jsp:element	动态创建一个XML元素
    jsp:attribute	定义动态创建的XML元素的属性
    jsp:body	定义动态创建的XML元素的主体
    jsp:text	用于封装模板数据
    

    9个对象

    对象	描述
    request	HttpServletRequest类的实例
    response	HttpServletResponse类的实例
    out	PrintWriter类的实例,用于把结果输出至网页上
    session	HttpSession类的实例
    application	ServletContext类的实例,与应用上下文有关
    config	ServletConfig类的实例
    pageContext	PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
    page	类似于Java类中的this关键字
    exception	exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象
    
    request对象
    <%!public HashMap<String, String> mzGetArgs(HttpServletRequest request) {
    	//判断请求方式并处理请求
    	Enumeration args = request.getParameterNames();
    	int count = 0;
    	HashMap<String, String> argsMap = new HashMap<String, String>();
    	while (args.hasMoreElements()) {
    		count++;
    		String paramName = (String) args.nextElement();
    		String paramValue = request.getParameter(paramName);
    		argsMap.put(paramName, paramValue);
    	}
    	if (count == 0) {
    		return null;
    	} else {
    		return argsMap;
    	}
    }%>
    
    session对象

    禁用sesseion

    <%@ page session="false" %>
    

    public Object getAttribute(String name)

    返回session对象中与指定名称绑定的对象,如果不存在则返回null

    public void setAttribute(String name, Object value)

    使用指定的名称和值来产生一个对象并绑定到session中

    public void removeAttribute(String name)

    移除session中指定名称的对象

    public void invalidate()

    将session无效化,解绑任何与该session绑定的对象

    servlet

    路由配置

    1. 通过@标志配置

      @WebServlet("/ServletTest")    // http://127.0.0.1/test/ServletTest       test 为项目名 下同
      
    2. 通过web.xml配置

      web.xml存放的位置应该是src/main/webapp/WEB-INF/web.xml

      <?xml version="1.0" encoding="UTF-8"?>  
      <web-app version="2.5"   
          xmlns="http://java.sun.com/xml/ns/javaee"   
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
          xsi:schemaLocation="http://JAVA.sun.com/xml/ns/javaee   
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
        <servlet>  
           <!-- 类名 -->  
      	<servlet-name>ServletTest</servlet-name> 
          <!-- 所在的包 -->  
          <servlet-class>com.mz1.test.ServletTest</servlet-class>  
        </servlet>  
        
        <servlet-mapping>  
          <servlet-name>ServletTest</servlet-name>  
          <!-- 访问的网址 -->  
          <url-pattern>/abc</url-pattern>  
          </servlet-mapping>  
      </web-app>  
      
      <!-- 这种方式定义的路由为 http://127.0.0.1/test/abc -->  
      

    文件IO

    读写文件模板

    <%@ page import = "java.io.*"%>
    <%//读文件函数 %>
    <%!public String file_get_contents(String fName){
    	File f = new File(fName);
    	try{
    		FileInputStream fip = new FileInputStream(f);
    		InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
    		StringBuffer sb = new StringBuffer();
    		while (reader.ready()) {
    			sb.append((char) reader.read());
    			// 转成char加到StringBuffer对象中
    		}
    		reader.close();
    		// 关闭读取流
    		fip.close();
    		return sb.toString();
    	}catch(Exception e){
    		// 处理异常
    	}
    	return null;
    }%>
    <%//写文件函数 %>
    <%!public boolean file_put_contents(String fName, String content){
    	File f = new File(fName);
    	try{
    		FileOutputStream fop = new FileOutputStream(f);
    		// 构建FileOutputStream对象,文件不存在会自动新建
    		OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
    		writer.append(content);  // 写入文件
    		writer.close();
    		// 关闭写入流,同时会把缓冲区内容写入文件
    		fop.close();
    		return true;
    	}catch(Exception e){
    		// 处理异常
    	}
    	return false;	
    }
    %>
    

    JDBC/数据库相关

    基本预编译模板

    <%@ page contentType = "text/html" %>
    <%@ page pageEncoding = "utf-8" %>
    <%@ page import="java.util.*,java.sql.*"%>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>sql测试</title>
    	<meta charset="utf-8">
    </head>
    <body>
    	<h1>test</h1>
    	<h2>?id=</h2>
    	<%
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test";
    Connection conn=DriverManager.getConnection(url, "sa", "mz1kawaii");
    String s1 = request.getParameter("id");
    if (s1 == null){
    	s1 = "1";
    }
    String sql ="select * from users where id="+s1+";";
    PreparedStatement ps = conn.prepareStatement(sql);
    ResultSet rs=ps.executeQuery();   //执行SQL语句
    while(rs.next()==true){
    	out.print(rs.getString("uname") + " - ");
       out.println(rs.getString("passwd"));
    }
    
    rs.close();            //关闭数据集
    ps.close();            //关闭SQL语句对象
    conn.close();        //关闭数据库连接对象
    	%>
    
    </body>
    </html>
    
  • 相关阅读:
    S2T40,第五章
    S2T40,第四章,简答5
    sqlmap扫描发现注入点示例
    使用jenkins部署.net项目
    在线预览PDF插件
    Visual Studio 2019 License Key
    asp.net core mvc 中 ModelState.IsValid 值是fasle
    sql操作
    sql server 查找与替换 正则表达式 匹配
    asp.net redis 帮助类封装
  • 原文地址:https://www.cnblogs.com/Mz1-rc/p/14819166.html
Copyright © 2011-2022 走看看