JavaWeb基础(8)------ jsp基础
JSP页面文件,不需要修改过代码就得去重启服务器JSP执行过程JSP文件内容他实际上就是一个Servlet,他是通过上面使用的方法使内容输出到页面上的,这些可以通过查看这个JSP文件生成的java代码就可以发现JSP语法标签JSP的标签和html的标签是一样的JSP注释<%-- 注释的内容--%>Java代码块<% java代码 %>--%><%@ page c
·
JSP
页面文件,不需要修改过代码就得去重启服务器

JSP执行过程

JSP文件内容
他实际上就是一个Servlet,他是通过上面使用的方法使内容输出到页面上的,这些可以通过查看这个JSP文件生成的java代码就可以发现
JSP语法
-
标签
JSP的标签和html的标签是一样的
-
JSP注释
<%-- 注释的内容 --%> -
Java代码块
<% java代码 %>--%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>语法</title> </head> <body> <% System.out.println("Hello jSP");//输出在控制台上面,普通的输出语句 /* out是JSPWriter对象,输出在页面上 */ out.println("helloJSP");//显示在页面上,但是在页面上还是不能实现换行,要想换行,还是的使用<br>进行换行,需要放在字符串后面:out.println("helloJSP<br>"); %> </body> </html> -
JSP表达式
/* 语法糖 */ <%=表达式%><%-- 相当于out.println("helloJSP");--%> <%="hello"%> -
声明
<%!声明的变量或方法%><%--jsp中的声明:如果加!代表的是声明的成员变量 不加!代表的是声明的是局部变量--%> <%!String s="abc";%>
JSP指令
-
page指令
<%@ page 属性名="属性值" 属性名="属性值"...%><%@ page contentType="text/html;charset="UTF-8" language="java" %>

-
include指令:可以包含其他页面
有点相对于一个java类从开一个java类中获取他的变量等内容,比如导入共同的内容:导入footer和header的页面
<!@ include file="包含的页面" %>
<%@include file=“head.jsp”%>
<%@include file=“foot.html”%>等
-
taglib指令:可以引入外部标签库
<%@ taglib uri=标签库的地址 prefix =前缀名称%>
JSP九大隐式对象(内置对象)
- 九大隐式对象:有一些对象是不需要自己去创建的,而是在这个页面中本身就携带的对象,我们可以对这些对象直接的使用,一共有九个,我们可以借助下面的对象名就能够直接使用,并不需要自己去创建

| 内置对象名称 | 说明 |
|---|---|
| request | 请求对象 |
| response | 响应对象 |
| pageContext | 页面上下文对象 |
| session | 会话对象 |
| application | 应用程序对象 |
| out | 输出对象 |
| config | 配置对象 |
| page | 页面对象 |
| exception | 异常对象 |
- PageContext对象
- 是JSP独有的, Servlet中没有。
- 四大域对象之一的页面域对象 ,还可以操作其他三个域对象中的属性。
- 还可以获取其他八个隐式对象。
- 生命周期是随着JSP的创建而存在,随着JSP的结束而消失。每个JSP页面都有一个PageContext对象。
request请求对象
request与Response请求对象详细介绍
Cookie和Session对象
其他内置对象
四大域对象

MVC模型
- M(Model) :模型。用于封装数据,封装的是数据模型!
- V(View) :视图。用于显示数据,动态资源用JSP页面,静态资源用HTML页面!
- C(Controller) :控制器。用于处理请求和响应,例如Servlet !

JavaWeb四层结构详解
案例
登录功能
- 1.创建–个web项目。
- 2.在web目录下创建一个index.jsp.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP</title>
</head>
<body>
<% Object username = session.getAttribute("username");
if (username == null){
%>
<a href="/demo/login.jsp">请登录</a>
<%} else {%>
<a href="/demo/addStudent.jsp">添加学生</a>
<a href="/demo/listStudentServlet">显示学生</a>
<%}%>
</body>
</html>
- 3.在页面中获取会话域中的用户名,获取到了就显示添加和查看功能的超链接,没获取到就显示登录功能的超链接。
- 4.在web 目录下创建一个login.jsp。实现登领面。
<%--
Created by IntelliJ IDEA.
User: yyadmin
Date: 2021/8/30
Time: 20:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>学生登录</title>
</head>
<body>
<form action="/demo/loginStudentServlet" method="get" autocomplete="off">
姓名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<button type="submit">登录</button>
</form>
</body>
</html>
- 5.创建LoginServlet ,获取用户名和密码。
- 6.如果用户名为空,则重定向到登录顽面。
- 7.如果不为空,将用户名添加到会话域中,再重定向到首页。
@WebServlet("/loginStudentServlet")
public class LoginStudentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取用户名和密码
String username = req.getParameter("username");
String password = req.getParameter("password");
//2.判断用户名
if (username == null || "".equals(username)){
//2. 1用户名为空重定向到登录页面
resp.sendRedirect("/demo/login.jsp");
return;
}
//2. 2用户名不为空将用户名存入会话域中
req.getSession().setAttribute("username",username);
//3.重定向到首页index. jsp
resp.sendRedirect("/demo/index.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
添加功能
- 1.在web目录下创建一 个addStudent.jisp,实现添加学生的表单项。
<%--
Created by IntelliJ IDEA.
User: yyadmin
Date: 2021/8/30
Time: 20:50
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加学生</title>
</head>
<body>
<form action="/demo/addStudentServlet" method="get" autocomplete="off">
学生姓名:<input type="text" name="username"><br>
学生年龄:<input type="number" name="age"><br>
学生成绩:<input type="number" name="score"><br>
<button type="submit">保存</button>
</form>
</body>
</html>
-
2.创建AddStudentServlet ,获取学生信息并保存到文件中。
-
3.通过定时刷新功能2秒后跳转到首页。
package com.yy.Servlet;
import com.yy.bean.Student;
import com.yy.bean.Student1;
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.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
/**
* @author Marston
* @date 2021/8/30
*/
@WebServlet("/addStudentServlet")
public class AddStudentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取表单数据
String username = req.getParameter("username");
String age = req.getParameter("age");
String score = req.getParameter("score");
//获取学生对象并赋值
Student1 stu = new Student1();
stu.setUsername(username);
stu.setAge(Integer.parseInt(age));
stu.setScore(Integer.parseInt(score));
//封装学生对象
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\testNomal\\FileTest\\stu.txt",true));
bw.write(stu.getUsername()+","+stu.getAge()+","+stu.getScore());
bw.newLine();
bw.close();
//通过定时刷新功能响应给浏览器
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().write("添加成功。2秒后返回首页...");
resp.setHeader("Refresh","2,URL=/demo/index.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
查询功能
- 1.创建ListStudentServlet ,读取文件中的学生信息到集合中。
- 2.将集合添加到会话域中。
- 3.定向到listStudent.jsp页面上。
@WebServlet("/listStudentServlet")
public class ListStudentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建字符输入流对象,关联对其的文件
BufferedReader br = new BufferedReader(new FileReader("E:\\testNomal\\FileTest\\stu.txt"));
//创建集合对象
ArrayList<Student1> list = new ArrayList<>();
//循环读取文件中的内容
String line;
while ((line=br.readLine()) != null){
Student1 stu = new Student1();
String[] arr = line.split(",");
stu.setUsername(arr[0]);
stu.setAge(Integer.parseInt(arr[1]));
stu.setScore(Integer.parseInt(arr[2]));
list.add(stu);
}
//将集合对象存入回话域
req.getSession().setAttribute("students",list);
//重定向到学生列表页面
resp.sendRedirect("/demo/listStudent.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
- 4.在web目录下创建一个listStudent.jsp.
- 5.定义表格标签。在表格中获取会话域的集合数据,将数据显示在顽面上。
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.yy.bean.Student1" %><%--
Created by IntelliJ IDEA.
User: yyadmin
Date: 2021/8/30
Time: 21:16
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查看学生</title>
</head>
<body>
<table width="600px" border="1px">
<tr>
<th>学生姓名</th>
<th>学生年龄</th>
<th>学生成绩</th>
</tr>
<% ArrayList<Student1> student1s = (ArrayList<Student1>)session.getAttribute("students");
for (Student1 s : student1s){
%>
<tr>
<td><%=s.getUsername()%></td>
<td><%=s.getAge()%></td>
<td><%=s.getScore()%></td>
</tr>
<%}%>
</table>
</body>
</html>
更多推荐



所有评论(0)