JSP核心技术
一、JSP基本概念
JSP是Java Server Page 的简称,跟Servlet 一样可以动态生成HTML响应,文件命名为XXX.jsp
JSP 与Servlet 的区别:
jsp经编译后就变成了Servlet,JVM只能识别java的类,不能识别JSP代码,web容器将JSP的代码编译成JVM能够识别的java类,即Servlet
jsp文件以HTML标记为主,内嵌java代码段,用于处理动态内容,servlet以java代码为主,通过HttpServletResponse对象动态输出HTML内容
Servlet能够很好地组织业务逻辑代码,但是在Java源文件中通过字符串拼接的方式生成动态HTML内容会导致代码维护困难、可读性差
JSP虽然规避了Servlet在生成HTML内容方面的劣势,但是在HTML中混入大量、复杂的业务逻辑同样也是不可取的
jsp更擅长用于页面展示,而servlet擅长逻辑控制,
servlet中没有内置对象,jsp内置对象不需通过HttpSerletRequest对象,HttpSerletResponse对象以及HttpSerlet对象得到
jsp是Servlet 的简化,使用jsp只需要完成输出到客户端的内容,jsp的java脚本如何镶嵌到类中由jsp容器完成;servlet是完整的java类,service方法用于生成对客户端的响应
JSP 与Servlet 的关系
二、jsp语法
声明区 可以定义全局变量,类,方法,格式:<%! 程序代码 %>
程序代码区,用于定义局部变量和要执行的java代码。 格式:<% 程序代码 %>
表达式,用于输出,不用加分号,格式:<%=要输出的值%>
注释,用于解释说明 格式:<!-- 只有HTML注释在浏览器可以看到-->;<%-- jsp注释--%>;<% // java单行注释%>;<% /* java多行注释*/%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>变量的声明</title>
<!--浏览器看得到的注释-->
<%!
int a;
public void print(){
System.out.println("全局变量"); //单行注释
}
public class User{
{
System.out.println("类加载");
}
}
/*多行注释*/
%>
<%
int b=20;
System.out.println("局部变量");
for (int i = 0; i <3 ; i++) {
System.out.println(i);
}
%>
</head>
<body>
<%= "a="+(a+1)%> <%--1,会默认给全局变量赋值--%>
<%= "b="+b%> <%--20--%>
<%= "hello"%> <%--hello--%>
</body>
</html>
指令 格式: <%@指令属性=“属性值”%>,指令的属性可以设定多个。
page:用于设置页面属性
import 导入相应的包,惟一允许在同一文档中多次出现的属性
contentType 设置Content-Type响应报头,标明即将发送到浏览器的文档类型
pageEncoding 设置页面的编码
language 指定页面使用的语言
session 控制页面是否参与HTTP会话
errorPage 处理当前页面中抛出但未被捕获的任何异常
isErrorPage 当前页是否可以作为其他页面的错误处理页面
<%@page pageEncoding="GBK" import="com.sun.accessibility" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--<%@taglib uri="tagLibary" prefix="prefix"%>--%> <html>
<head>
<title>页面指令的设置</title>
</head>
<body> </body>
</html>
taglib指令用来扩展JSP程序的标签元素,引入其他功能的标签库文件
<!-- prefix属性用于指定库前缀 -->
<!-- uri属性用于指定库的标识 -->
<%@tagliburi=“tagLibary”prefix=“prefix”%>
include用于引入另一个JSP程序或HTML文件等,JSP引擎会在JSP文件的转换时期把file属性设定的文件包含进来,然后开始执行转换及编译工作,属于静态编译,格式: <%@include file="被包含的文件地址"%>
jsp:include/jsp:param
- jsp:include动作用于引入另一个JSP程序或HTML文件等
- 执行到include时,被include的文件才会被编译。
- 如果include的是jsp文件,那它不会被转换成Servlet文件
- include动作在转换时期是不会被编译的,只有在客户端请求时期被执行到才会被动态的编译载入(动态包含,推荐)。
jsp:forward/jsp:param
forward动作用于在JSP中实现转发,将请求转发到另一个指定的JSP程序或者Servlet中处理
<jsp:forwardpage=“urlSpec”flush=“true”/>
<jsp:forwardpage=“urlSpec”>
<!-- 用于指定参数和其对应的值 -->
<jsp:paramname=“key”value=“value”/>
</jsp:forward>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>include</title>
<%@include file="declare.jsp"%>
<jsp:include page="index.jsp">
<jsp:param name="name" value="zhangfei"/>
</jsp:include>
<jsp:forward page="target.jsp">
<jsp:param name="name" value="guanyu"/>
</jsp:forward>
</head>
<body> </body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
hello
<%="name="+request.getParameter("name")%> </body>
</html>
三、jsp内置对象
- jsp程序中有9个内置对象,由容器为用户进行实例化,在JSP转换成为Servlet后,会自动追加变量定义,简化开发
对象变量 | 对象类型 | 作用 |
out | JSPWriter | 输出流 |
request | HttpServletRequest | 请求信息 |
response | HttpServletResponse | 响应信息 |
session | HttpSession | 会话 |
application | ServletContext | 全局的上下文对象 |
pageContext | PageContext | JSP页面上下文 |
page | Object | JSP页面本身 |
config | ServletConfig | Servlet配置对象 |
exception | Throwable | 捕获网页异常 |
1. out对象
- out对象是缓冲输出流,用于向客户端输出信息
方法声明 | 功能介绍 |
void println(String x) | 向客户端输出各种类型数据 |
void newLine() | 输出一个换行符 |
void close() | 关闭输出流 |
int getBufferSize() | 返回缓冲区的大小 |
int getRemaining() | 返回缓冲区中未使用的字节数 |
void flush() | 输出缓冲区里的数据 |
void clearBuffer() | 清除缓冲区里的数据,同时把数据输出到客户端 |
void clear() | 清除缓冲区里的数据,但不把数据输出到客户端 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>out的方法适用</title>
</head>
<body>
<%
out.print(2); out.print(3); out.newLine();
out.print(4);
out.newLine();
out.println("<h1>hello world!</h1>"); int bufferSize = out.getBufferSize();
System.out.println("缓存大小"+bufferSize);//缓存大小8192
int remaining = out.getRemaining();
System.out.println("剩余缓存大小"+remaining); //剩余缓存大小8102
System.out.println("缓冲区里的数据大小"+(bufferSize-remaining)); out.clearBuffer();//先输出到客户端在清除 ,但在页面演示效果是跟clear一样
//out.flush(); //将缓存数据输出到客户端
//out.clear();//不输出直接清除
System.out.println("剩余缓存大小"+out.getRemaining()); //剩余缓存大小8102
out.close();
%> </body>
</html>
2. request对象
- request对象封装的是调用JSP页面的请求信息,它是HttpServletRequest接口的一个实例,该对象的属性值只在一个请求中保存
方法声明 | 功能介绍 |
String getMethod() | 返回客户端向服务器端传送数据的方式 |
String getParameter(String name) | 返回客户端向服务器端传送的参数值 |
String[] getParameterValues( String name) |
获得指定参数的所有值 |
String getRequestURI() | 获得请求地址 |
String getRemoteAddr() | 返回发送请求的客户端或最后一个代理的IP地址 |
int getRemotePort() | 返回发送请求的客户端或最后一个代理的端口号 |
String getServerName() | 获取服务器的名字 |
int getServerPort() | 获取服务器端的端口 |
void setAttribute(String name,Object o) | 在此请求中存储属性。属性在请求之间重置 |
Object getAttribute(String name) | 将指定属性的值作为对象返回,若不存在则返回空 值 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>request的方法使用</title>
</head>
<body>
<%
System.out.println(request.getServerName());//服务器名字
System.out.println(request.getServerPort());//端口号
request.setAttribute("name","guanyu ");
request.setAttribute("age",24);
%>
<jsp:forward page="requestTarget.jsp"></jsp:forward> </body>
</html> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>request获取属性</title>
</head>
<body>
<%
System.out.println(request.getAttribute("name"));
System.out.println(request.getAttribute("age"));
System.out.println(request.getMethod());
%> </body>
</html>
3.response内置对象
- response对象用于给客户端相应输出处理结果,它是HttpServletResponse接口的一个实例。
- 经常用于设置HTTP标题,添加cookie、设置响应内容的类型和状态、发送HTTP重定向和编码URL
方法声明 | 功能介绍 |
void addCookie(Cookie cookie) | 添加一个Cookie对象,用于在客户端保存特定的信 息 |
void addHeader(String name, String value) |
添加HTTP头信息,该Header信息将发送到客户端 |
boolean containsHeader(String name) | 判断指定名字的HTTP文件头是否存在 |
void sendRedirect(String location) | 重定向JSP文件 |
void setContentType(String type) | 设置类型与编码方式 |
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>response的方法使用</title>
</head>
<body>
<%
response.addHeader("refresh","1");//每秒进行刷新
Date date = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-DD HH:mm:ss");
String format = sdf.format(date);
out.print(format);
%>
</body>
</html>
4. session对象
session对象表示浏览器和服务器之间的一次会话,一次会话可以包含多次请求,在多次请求之间可以借助session对象存储信息,它是HttpSession类型的一个实例。
该对象的属性值在一次会话范围中保存,保存在服务器端,只要不关闭浏览器,默认半个小时内都可以访问
方法声明 | 功能介绍 |
void setAttribute(String name, Object value) |
使用指定的名称将对象绑定到此会话 |
Object getAttribute(String name) |
返回在此会话中用指定名称绑定的对象,如果没有对象在该 名称下绑定则返回空值 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>application</title>
</head>
<body>
<%
session.setAttribute("name","huangzhong");
System.out.println("设置成功"); %>
</body>
</html> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
out.print(session.getAttribute("name"));
%>
</body>
</html>
5. application对象
- application对象是一个web程序的全局变量,它是ServletContext类型的一个实例,在整个服务器上保存数据,所有用户共享
方法声明 | 功能介绍 |
void setAttribute(String name, Object object) |
将对象绑定到此servlet上下文中的给定属性名 |
Object getAttribute(String name) | 返回给定名称的servlet容器属性,若没有该名称的属 性返回nul |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
out.print(application.getAttribute("name"));
%>
</body>
</html> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>application</title>
</head>
<body>
<%
application.setAttribute("name","zhaoyun");
%>
</body>
</html>
6.pageContext对象
- pageContext对象是PageContext类型的对象,可以使用这个对象来管理其他的隐含对象,只在一个页面中保存数据
方法声明 | 功能介绍 |
void setAttribute(String name, Object value,int scope) | 使用适当的作用域设置指定的名称和值 |
Object getAttribute(String name, int scope) | 返回指定作用域中名称关联的对象,若找不到则返回null |
ServletRequest getRequest() | 获取请求对象 |
ServletResponse getResponse() | 获取响应对象 |
HttpSession getSession() | 获取会话对象 |
ServletConfig getServletConfig() | 获取配置对象 |
JspWriter getOut() | 获取输出对象 |
Object getPage() | 获取页面对象 |
Exception getException() | 获取异常对象 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>PageContext</title>
</head>
<body>
<%
// 使用适当的作用域设置指定的名称和值
pageContext.setAttribute("name","zhaoyun");
// 返回指定作用域中名称关联的对象,若找不到则返回null
System.out.println(pageContext.getAttribute("name"));
// 获取请求对象
pageContext.getResponse();
// 获取响应对象
pageContext.getResponse();
// 获取会话对象
pageContext.getSession();
// 获取配置对象
pageContext.getServletConfig();
// 获取输出对象
pageContext.getOut();
// 获取页面对象
pageContext.getPage();
// 获取异常对象
//System.out.println(10/0);
out.print(pageContext.getException());
%> </body>
</html>
7. exception对象
- exception 对象是Throwable的实例,表示的是JSP的异常信息。如果要使用它,必须将对应页面page指令的isErrorPage属性设置成true。
- 单个页面的处理方式 <%@page errorPage="error.jsp" %>
- 在web.xml中配置统一的异常处理页面
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>
<%@page errorPage="exceptionTarget.jsp" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>exception</title>
</head>
<body>
<%
int a=10;
int b=0;
System.out.println(a/b);
%>
</body>
</html> <%@page isErrorPage="true" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>exceptionTarget</title>
</head>
<body>
<%
if (exception!=null){
out.println(exception.getMessage());
}
%> </body>
</html>
四、javabean组件
- JavaBean 是使用 Java 语言开发的一个可重用的组件,在 JSP 开发中可以使用 JavaBean 减少重复代码,使整个 JSP 代码的开发更加简洁。
- JavaBean本质上就是Java类,通常要求如下:
- 属性:全部私有化,通过get和set方法进行访问
- 方法:必须是public关键字修饰
- 构造器 :必须有无参构造方法
package com.modal; public class Student {
private String name;
private int id; public Student(String name, int id) {
this.name = name;
this.id = id;
} public Student() {
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} @Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
}
- 使用jsp:useBean的方式创建javaBean实例
- 使用jsp:setProperty的方式设置javaBean的属性值
- 使用jsp:getProperty的方式获取javaBean的属性值
- JavaBean的保存范围有page、request、session以及application,默认是page范围
- 删除组件对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>para</title>
</head>
<body>
<form action="javabean.jsp"method="post">
id :<input type="text" name="id1"> <br>
姓名:<input type="text" name="name1"> <br>
<input type="submit" value="提交javabean">
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>javabean组件的使用</title>
</head>
<body>
<%--创建javabean对象--%>
<jsp:useBean id="student" scope="session" class="modal.Student"></jsp:useBean>
<%--对象初始化--%>
<jsp:setProperty name="student" property="id" param="id1"></jsp:setProperty>
<jsp:setProperty name="student" property="name" param="name1"></jsp:setProperty>
<%
out.print("设置成功");
%>
</body>
</html> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>javabean组件的使用</title>
</head>
<body>
<%--创建javabean对象--%>
<jsp:useBean id="student" scope="session" class="modal.Student"></jsp:useBean>
<%--对象初始化--%>
id =<jsp:getProperty name="student" property="id"/>
name = <jsp:getProperty name="student" property="name"/> </body>
</html> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>remove</title>
</head>
<body>
<%
session.removeAttribute("student");
out.print("删除成功");
%>
</body>
</html>
五、MVC设计模式
- MVC是模型(Model)和视图(View)以及控制器(Controller)的简写,是一种将数据、界面显示和业务逻辑进行分离的组织方式,在改进界面及用户交互时,不需要重新编写业务逻辑,提高代码的可维护性。
- M:主要用于封装业务数据的JavaBean(Bean) 和 业务逻辑的JavaBean(Service)及访问数据库的DAO对象。
- V:主要负责数据收集 和 数据展现,通常由JSP文件完成。
- C:主要负责流程控制 和 页面跳转,通常由Servlet完成。
- 实现用户登录功能
- 建立浏览器与控制层交互
package com.Servlet; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; @WebServlet(name = "LoginServlet",urlPatterns = "/login")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("userName");
System.out.println("获得的登录名为"+name);
String password = request.getParameter("password");
System.out.println("获得的登录名为"+password);
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
<%@page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录页面</title>
</head>
<body>
<form action="login" method="post">
用户名:<input type="text" name="userName"><br>
密 码:<input type="text" name="password"> <br>
<input type="submit" value="登录">
</form> </body>
</html>
- javabean 与数据库的连接
package com.bean; public class User {
private int id;
private String userName;
private String password; public User(String userName, String password) {
this.userName = userName;
this.password = password;
} public User() {
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", password='" + password + '\'' +
'}';
}
}
package com.util; import java.sql.*; public class Dbutils {
public static String DRIVERNAME;
public static String URL;
public static String USERNAME;
public static String PASSWORD;
static {
DRIVERNAME="com.mysql.jdbc.Driver";
URL="jdbc:mysql://localhost:3306/db_web?characterEncoding=utf-8";
USERNAME="root";
PASSWORD="123456";
try {
Class.forName(DRIVERNAME);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
return connection;
}
public static void close(Connection con, PreparedStatement ps){
if (null!=con && null!=ps){
try {
ps.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection con, PreparedStatement ps, ResultSet rs){
if (null!=rs){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
close(con,ps);
}
}
- dao层
package com.dao; import com.bean.User;
import com.util.Dbutils; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class UserDaoImp implements UserDao {
@Override
public User checkUser(User user) {
Connection connection = null;
PreparedStatement ps = null;
ResultSet resultSet = null;
try {
connection = Dbutils.getConnection();
String sql="select * from user where userName=? and password=?";
ps = connection.prepareStatement(sql);
ps.setString(1,user.getUserName());
ps.setString(2,user.getPassword());
resultSet = ps.executeQuery();
if (resultSet.next()) {
return new User(resultSet.getString("userName"),resultSet.getString("password"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
Dbutils.close(connection,ps,resultSet);
}
return null;
}
}
package com.test; import com.bean.User;
import com.dao.UserDao;
import com.dao.UserDaoImp; public class UserdaoTest {
public static void main(String[] args) {
UserDao userDao = new UserDaoImp();
User admin = userDao.checkUser(new User("admin", "123456"));
if (null!=admin){
System.out.println("登陆成功");
}else System.out.println("登录失败");
}
}
package com.dao; import com.bean.User; public interface UserDao {
public abstract User checkUser(User user);
}
package com.service; import com.bean.User;
import com.dao.UserDao; public class UserService {
private UserDao userDao; public UserService() {
this.userDao =UserDaoFactory.getUserDao();
} public User userLoginService(User user){
return userDao.checkUser(user);
}
}
- servlet与service层交互,工厂方法模式
package com.factory; import com.dao.UserDao;
import com.dao.UserDaoImp; public class UserDaoFactory {
/**
* 通过静态方法模式获取userdao*/
public static UserDao getUserDao(){
return new UserDaoImp();
}
}
- 控制层与视图层的交互
<%@page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录页面</title>
</head>
<body>
<form action="login" method="post">
用户名:<input type="text" name="userName"><br>
密 码:<input type="text" name="password"> <br>
<span style="color: red"><%= request.getAttribute("error")==null? "":request.getAttribute("error")%></span>
<input type="submit" value="登录">
</form> </body>
</html>
<%@ page import="com.bean.User" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021/1/20
Time: 16:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>主页面</title>
</head>
<body>
<h1>登陆成功,欢迎<%= ((User)session.getAttribute("user")).getUserName()%>使用!</h1>
</body>
</html>
package com.Servlet; import com.bean.User;
import com.dao.UserDao;
import com.factory.UserDaoFactory;
import com.service.UserService; import javax.servlet.DispatcherType;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; @WebServlet(name = "LoginServlet",urlPatterns = "/login")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("userName");
System.out.println("获得的登录名为"+name);
String password = request.getParameter("password");
System.out.println("获得的登录名为"+password);
UserService userService = new UserService();
User admin = userService.userLoginService(new User(name, password));
if (null!=admin){
System.out.println("登陆成功");
request.getSession().setAttribute("user",admin);
response.sendRedirect("main.jsp"); }else {System.out.println("登录失败");
request.setAttribute("error","登录失败,用户名或密码错误");
RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp");
dispatcher.forward(request,response);
} } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
package com.test;
import com.bean.User;
import com.service.UserDao;
import com.service.UserDaoImp;
public class UserdaoTest {
public static void main(String[] args) {
UserDao userDao = new UserDaoImp();
User admin = userDao.checkUser(new User("admin", "123456"));
if (null!=admin){
System.out.println("登陆成功");
}else System.out.println("登录失败");
}
}
JSP核心技术的更多相关文章
- 图解 & 深入浅出 JavaWeb:Servlet 再说几句
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- Android 开发知识体系
知识体系 1.Unix/Linux平台技术:基本命令,Linux下的开发环境 2.企业级数据库技术:SQL语言.SQL语句调优.Oracle数据库技术 3.Java 语言核心技术:Java语言基础.J ...
- Java匹马行天下之JavaWeb核心技术——JSP
JSP动态网页技术 一.JavaWeb简介 一.什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总称. 需要在特定的web服务器上运行,分为web服务器和web客 ...
- Java匹马行天下之JavaWeb核心技术——JSP(续一)
十二.JSP表单处理 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理.浏览器中使用 GET 和 POST 方法向服务器提交数据. GET 方法 GET方法将请求的编码信息添加在网 ...
- javaWeb核心技术第九篇之JSP
JSP:全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术.在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示 ...
- SpingMVC 核心技术帮助文档
声明:本篇文档主要是用于参考帮助文档,没有实例,但几乎包含了SpringMVC 4.2版本的所有核心技术,当前最新版本是4.3,4.2的版本已经经是很新的了,所以非常值得大家一读,对于读完这篇文档感觉 ...
- Struts2核心技术简介
Struts2核心技术简介 使用Struts2框架,只要注重以下三大元素:配置文件.映射文件和Action: 全局属性文件struts.properties:保存系统运行的一些参数变量,整个系统只有一 ...
- Struts核心技术简介
Struts核心技术简介 1.Struts内部机制 Struts是一种基于MVC经典设计模式的开发源代码的应用框架,它通过把Servlet.JSP.JavaBean.自定义标签和信息资源整合到一个 ...
- JSP 相关试题(三)
判断题 1.动态网页和静态网页的根本区别在于服务器端返回的HTML文件是事先存储好的还是由动态网页程序生成的(对 ) 2.Web开发技术包括客户端和服务器端的技术.(对 ) 3.Tomcat和JDK都 ...
随机推荐
- Apple macOS 下载汇总
macOS Big Sur 11,macOS Catalina 10.15,macOS Mojave 10.14,macOS High Sierra 10.13,macOS Sierra 10.12 ...
- 回顾Servlet
1.新建一个Maven工程当做父工程!pom依赖! <!-- 依赖 --> <dependencies> <dependency> <groupId>j ...
- Halide应用开发
Halide应用开发 1. 基本原理 1.1.介绍 随着人工智能的普及,深度学习网络的不断涌现,为了让各硬件(CPU, GPU, NPU,...)能够支持深度学习应用,各硬件芯片需要软件库去支持高性能 ...
- 用OpenCV进行摄像机标定
用OpenCV进行摄像机标定 照相机已经存在很长时间了.然而,随着廉价针孔相机在20世纪末的引入,日常生活中变得司空见惯.不幸的是,这种廉价伴随着它的代价:显著的扭曲.幸运的是,这些常数,通过校准和一 ...
- Django框架之路由层汇总
一 Django中路由的作用 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来 ...
- UF_DRF 制图符号标注尺寸
Open C uc5530uc5531uc5532uc5533uc5534uc5540uc5541uc5542uc5543uc5550uc5551uc5563uc5566uf5505uf5506uf5 ...
- NX二次开发-创建(临时)坐标系
函数:UF_CSYS_create_csys() . UF_CSYS_create_temp_csys() 函数说明:创建坐标系 .创建临时坐标系 用法: #include <uf.h> ...
- 使用 Hexo 搭建静态博客
目录 Hexo 简介 什么是 Hexo? Hexo 安装 Hexo 建站 Hexo 配置 Hexo 自定义主题 Hexo 写作 Hexo 服务器 Hexo 生成与发布 一键部署 Hexo 站点到 gi ...
- 尼恩 Java高并发三部曲 [官方]
高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部曲 > 面试必备 + 大厂必备 + 涨薪 ...
- TypeScript 在开发应用中的实践总结
背景 以前 hybrid app 的移动端开发模式下,H5 和客户端通信的 js sdk 代码使用 js 编写,sdk 方法的说明使用文档输出.对于开发的使用来说,在 IDE 中不能得到友好的参数类型 ...