JavaWeb学习大纲传送门
可跳转目录:
web的环境搭建含Maven本地库和tomcat
一,JSP的简单介绍
二,JSP页面的组成
三,JSP对象的组成
四,Servlet的文字介绍
五,Java代码介绍servlet
六,运用tomcat运行
七,浏览器下的效果展示
八,问题的解答
一,JSP的简单介绍
- JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。
- JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。
- JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
- JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。
- 标签库能增强功能和服务器性能,而且不受跨平台问题的限制。
- JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
二,JSP页面的组成
格式 | 解释 |
---|---|
<%@ 指令%> | JSP指令用于对JSP页面进行设置 |
<%小脚本%> | 在其中编写Java代码,但不能定义方法或类 |
<%= 表达式%> | 用于计算并向页面输出内容 |
<%!声明%> | 用于在JSP页面中定义方法 |
<%–JSP注释–%> | 用于在JSP页面查看 |
HTML静态内容 | 指HTML/CSS/JavaScript |
三,JSP对象的组成
- request对象:Request对象称为请求对象,它是HttpServletRequest接口的一个对象,它表示客户端向服务端发送的一个请求,该请求含有
- 客户端提交的的数据
- 客户端主机信息
- 客户端所使用的浏览器信息
- 常用方法:
request.getParameter(“参数名”):用于获得客户端提交的数据,返回字符串
request.setCharacterEncoding(“UTF-8”):用于设置request对象的编码集,可以解决post请求的中文乱码问题
- respone对象:Response称为响应对象,它是HttpServletResponse接口的一个对象,它表示服务端向客户端响应
- 主要:回传的数据
- 常用方法:
Response.sendRedirect(“地址”):服务端向客户端回传的页面(跳转的页面)
四,Servlet的介绍:
- servlet:Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
- 使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
- Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。
- 相比于 CGI,Servlet 有以下几点优势:
- 性能明显更好。
- Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
- Servlet 是独立于平台的,因为它们是用 Java 编写的。服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
- Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。
五, Java代码介绍servlet
- 图解:
- register.jsp的jsp文件图解
- registerservlet.java的java文件图解
- code:
- register.jsp文件code如下:(这里采用打印的方式方便观察结果)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
</head>
<body>
<h2>用户注册</h2>
<form method="post" action="register.do">
账户:<input type="text" name="user_name">
密码:<input type="password" name="user_password">
性别:<input type="text" name="user_sex">
爱好:<input type="text"name="user_hobbys">
生日:<input type="text"name="user_birthday">
<button>注册</button>
<button type="reset">重置</button>
</form>
</body>
</html>
- registerservlet.java文件code如下:
package com.jazhong.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("/register.do")
public class registerservlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(request.getParameter("user_name"));
System.out.println(request.getParameter("user_password"));
System.out.println(request.getParameter("user_sex"));
System.out.println(request.getParameter("user_hobbys"));
System.out.println(request.getParameter("user_birthday"));
response.sendRedirect("index.jsp");
}
}
六,运用tomcat运行
- 点击启动服务器
- 弹出网页即为成功(默认为index.jsp页面)
- 如果再次运行点击
- 部署与发布(不知道意思的,操作一下就明白了)
七,浏览器下的jsp展示
-
添加jsp页面名
-
回车展示,
-
控制台查看结果
-
接下来就可以通过刚学过的JDBC对数据进行增删改查实现在JSP了
八,问题的解答:(小编也遇到过问题所以,将小编的问题罗列下来,如有共鸣,解决之)
- 错误与解答:
- 找不到tomcat服务器:可能你的IDEA是社区版,不是企业版。是企业版的话,肯定可以找到的
- 目录结构没有显示完全:可能是未联网,因为服务器要下载一些文件,也可能是本地仓库搭建失败,等
- 浏览器显示乱码:存在jsp文件没有设置:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
,还可能是类RegisterServlet的service方法下缺少设置编码集的代码request.setCharacterEncoding("UTF-8");
- 浏览器404:多半是名字打错了,比如在jsp文件下为register.do在java文件下应是/register.do,还可能是你的jsp文件中除了input之外报黄了,哪黄哪错
- 浏览器404表示未找到目标资源:jsp文件放在了WEB-INF里了,应当放在webapp下
- 继承不到HttpServlet:因为缺少这段Maven下图中的Maven(可以理解为jar包)但是它是通过Maven的依赖管理进行管理的所以只需要将它放入pop.xml文件的中通常基本的都有,这里列举连接数据库的和servlet
- Java Servlet API 的Maven:
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
- 数据库的Maven
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>