一、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>
密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:<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>
密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:<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核心技术的更多相关文章

  1. 图解 & 深入浅出 JavaWeb:Servlet 再说几句

    Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter   ...

  2. Android 开发知识体系

    知识体系 1.Unix/Linux平台技术:基本命令,Linux下的开发环境 2.企业级数据库技术:SQL语言.SQL语句调优.Oracle数据库技术 3.Java 语言核心技术:Java语言基础.J ...

  3. Java匹马行天下之JavaWeb核心技术——JSP

    JSP动态网页技术 一.JavaWeb简介 一.什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总称. 需要在特定的web服务器上运行,分为web服务器和web客 ...

  4. Java匹马行天下之JavaWeb核心技术——JSP(续一)

      十二.JSP表单处理 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理.浏览器中使用 GET 和 POST 方法向服务器提交数据. GET 方法 GET方法将请求的编码信息添加在网 ...

  5. javaWeb核心技术第九篇之JSP

    JSP:全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术.在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示 ...

  6. SpingMVC 核心技术帮助文档

    声明:本篇文档主要是用于参考帮助文档,没有实例,但几乎包含了SpringMVC 4.2版本的所有核心技术,当前最新版本是4.3,4.2的版本已经经是很新的了,所以非常值得大家一读,对于读完这篇文档感觉 ...

  7. Struts2核心技术简介

    Struts2核心技术简介 使用Struts2框架,只要注重以下三大元素:配置文件.映射文件和Action: 全局属性文件struts.properties:保存系统运行的一些参数变量,整个系统只有一 ...

  8. Struts核心技术简介

    Struts核心技术简介 1.Struts内部机制   Struts是一种基于MVC经典设计模式的开发源代码的应用框架,它通过把Servlet.JSP.JavaBean.自定义标签和信息资源整合到一个 ...

  9. JSP 相关试题(三)

    判断题 1.动态网页和静态网页的根本区别在于服务器端返回的HTML文件是事先存储好的还是由动态网页程序生成的(对 ) 2.Web开发技术包括客户端和服务器端的技术.(对 ) 3.Tomcat和JDK都 ...

随机推荐

  1. Apple macOS 下载汇总

    macOS Big Sur 11,macOS Catalina 10.15,macOS Mojave 10.14,macOS High Sierra 10.13,macOS Sierra 10.12 ...

  2. 回顾Servlet

    1.新建一个Maven工程当做父工程!pom依赖! <!-- 依赖 --> <dependencies> <dependency> <groupId>j ...

  3. Halide应用开发

    Halide应用开发 1. 基本原理 1.1.介绍 随着人工智能的普及,深度学习网络的不断涌现,为了让各硬件(CPU, GPU, NPU,...)能够支持深度学习应用,各硬件芯片需要软件库去支持高性能 ...

  4. 用OpenCV进行摄像机标定

    用OpenCV进行摄像机标定 照相机已经存在很长时间了.然而,随着廉价针孔相机在20世纪末的引入,日常生活中变得司空见惯.不幸的是,这种廉价伴随着它的代价:显著的扭曲.幸运的是,这些常数,通过校准和一 ...

  5. Django框架之路由层汇总

    一 Django中路由的作用 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来 ...

  6. UF_DRF 制图符号标注尺寸

    Open C uc5530uc5531uc5532uc5533uc5534uc5540uc5541uc5542uc5543uc5550uc5551uc5563uc5566uf5505uf5506uf5 ...

  7. NX二次开发-创建(临时)坐标系

    函数:UF_CSYS_create_csys() . UF_CSYS_create_temp_csys() 函数说明:创建坐标系 .创建临时坐标系 用法: #include <uf.h> ...

  8. 使用 Hexo 搭建静态博客

    目录 Hexo 简介 什么是 Hexo? Hexo 安装 Hexo 建站 Hexo 配置 Hexo 自定义主题 Hexo 写作 Hexo 服务器 Hexo 生成与发布 一键部署 Hexo 站点到 gi ...

  9. 尼恩 Java高并发三部曲 [官方]

    高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部曲 > 面试必备 + 大厂必备 + 涨薪 ...

  10. TypeScript 在开发应用中的实践总结

    背景 以前 hybrid app 的移动端开发模式下,H5 和客户端通信的 js sdk 代码使用 js 编写,sdk 方法的说明使用文档输出.对于开发的使用来说,在 IDE 中不能得到友好的参数类型 ...