web | jsp考试复习要点整理
很烦,不想学这个东西,但是没有办法,还是得过的。
jsp
Author@Mz1
原理
编译原理
- 解析jsp
- jsp->servlet
- 编译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
路由配置
-
通过@标志配置
@WebServlet("/ServletTest") // http://127.0.0.1/test/ServletTest test 为项目名 下同
-
通过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>
本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/14819166.html
如果有问题可以在下方评论或者email:mzi_mzi@163.com