|
@@ -289,6 +289,7 @@ webn服务器接收到客户端的http请求,针对请求,分别创建一个
|
|
|
// 需要设置改项目的路径
|
|
|
resp.setHeader("Location", "/r/image");
|
|
|
resp.setStatus(HttpServletResponse.SC_FOUND);
|
|
|
+resp.sendRedirect("/r/image");
|
|
|
```
|
|
|
重定向和转发区别?
|
|
|
相同点:
|
|
@@ -432,3 +433,243 @@ java server pages:java服务器端界面,也和servlet一样,用于动态w
|
|
|
|
|
|
* 原理图
|
|
|

|
|
|
+
|
|
|
+### 6.3、JSP基本语法
|
|
|
+
|
|
|
+任何语言都有自己的语法,JPS作为java的一种应用,它拥有自己的扩充语法(了解即可),并且支持所有的java语法
|
|
|
+
|
|
|
+1. JSP表达式
|
|
|
+
|
|
|
+```jsp
|
|
|
+<%--JSP表达式
|
|
|
+ 作用:用来将程序的输出到客户端
|
|
|
+ <%= 变量或者表达式%>
|
|
|
+--%>
|
|
|
+<%= new java.util.Date()%>
|
|
|
+```
|
|
|
+
|
|
|
+2. JSP脚本片段
|
|
|
+
|
|
|
+```jsp
|
|
|
+ <%
|
|
|
+ int sum = 0;
|
|
|
+ for (int i = 0; i < 100; i++) {
|
|
|
+ sum += i;
|
|
|
+ }
|
|
|
+ out.println("<h1>Sum=" + sum + "</h1>");
|
|
|
+ %>
|
|
|
+ <%--JSP脚本片段--%>
|
|
|
+ <%
|
|
|
+ int sum = 0;
|
|
|
+ for (int i = 0; i < 100; i++) {
|
|
|
+ sum += i;
|
|
|
+ }
|
|
|
+ out.println("<h1>Sum=" + sum + "</h1>");
|
|
|
+ %>
|
|
|
+
|
|
|
+ <%
|
|
|
+ for (int i = 0; i < 5; i++) {
|
|
|
+ %>
|
|
|
+ <h1>Hello,World <%=i%></h1>
|
|
|
+ <%
|
|
|
+ }
|
|
|
+ %>
|
|
|
+```
|
|
|
+
|
|
|
+3. jsp声明:会被编译到JSP生产JAVA类中!其他的,就会被生产到_jspservice方法中!
|
|
|
+
|
|
|
+```jsp
|
|
|
+ <%!
|
|
|
+ static {
|
|
|
+ System.out.println("Loading Servlet!");
|
|
|
+ }
|
|
|
+ private int g = 0;
|
|
|
+ public void test() {
|
|
|
+ System.out.println("in test method");
|
|
|
+ }
|
|
|
+ %>
|
|
|
+```
|
|
|
+
|
|
|
+4. jsp的注释无法显示在html中
|
|
|
+
|
|
|
+### 6.4、JSP指令
|
|
|
+
|
|
|
+```jsp
|
|
|
+<%@page%>
|
|
|
+<%--g--%>
|
|
|
+
|
|
|
+<%@include file=""%>
|
|
|
+这个与上面的区别:下面的本质还是三个页面而上面是三个部分拼接成一个
|
|
|
+jsp:include page="index.jsp"/
|
|
|
+```
|
|
|
+
|
|
|
+### 6.5、9大内置对象
|
|
|
+
|
|
|
+* Pagecontext 存东西
|
|
|
+* Request 存东西
|
|
|
+* Response
|
|
|
+* Session 存东西
|
|
|
+* Application 存东西
|
|
|
+* Config
|
|
|
+* out
|
|
|
+* page
|
|
|
+* Exception
|
|
|
+
|
|
|
+```java
|
|
|
+// 保存的数据只在一个页面有效
|
|
|
+pageContext.setAttribute("name1", "1");
|
|
|
+// 保存的数据只在一次请求中有效,请求转发(重定向无效)会携带这个数据
|
|
|
+request.setAttribute("name2", "2");
|
|
|
+// 保存的数据只在一次会话有效
|
|
|
+session.setAttribute("name3", "3");
|
|
|
+// 保存的数据只在服务器中有效,从打开服务器到关闭服务器
|
|
|
+application.setAttribute("name4","4");
|
|
|
+```
|
|
|
+
|
|
|
+### 6.6、JSP标签、JSTL标签、EL表达式
|
|
|
+
|
|
|
+```jsp
|
|
|
+ <!--JSTL表达式依赖-->
|
|
|
+ <dependency>
|
|
|
+ <groupId>javax.servlet.jsp.jstl</groupId>
|
|
|
+ <artifactId>jstl-api</artifactId>
|
|
|
+ <version>1.2</version>
|
|
|
+ </dependency>
|
|
|
+ <!--standard标签库-->
|
|
|
+ <dependency>
|
|
|
+ <groupId>taglibs</groupId>
|
|
|
+ <artifactId>standard</artifactId>
|
|
|
+ <version>1.1.2</version>
|
|
|
+ </dependency>
|
|
|
+```
|
|
|
+EL表达式:${}
|
|
|
+* 获取数据
|
|
|
+* 执行运算
|
|
|
+* 获取web开发的常用对象
|
|
|
+
|
|
|
+JSP标签
|
|
|
+```jsp
|
|
|
+<jsp:include page="index.jsp"/>
|
|
|
+<%--转发--%>
|
|
|
+<jsp:forward page="/jsptag2.jsp">
|
|
|
+ <jsp:param name="a" value="a"/>
|
|
|
+ <jsp:param name="b" value="b"/>
|
|
|
+</jsp:forward>
|
|
|
+```
|
|
|
+
|
|
|
+JSTL标签
|
|
|
+
|
|
|
+JSTL标签库的使用就是为了弥补HTML标签的不足;他自定义许多标签,可以供我们使用,标签的功能和java代码一样!
|
|
|
+* 核心标签(要求掌握部分)
|
|
|
+
|
|
|
+* 格式化标签
|
|
|
+* SQL 标签
|
|
|
+* XML 标签
|
|
|
+*
|
|
|
+```jsp
|
|
|
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
|
|
+<c:if test="${param.username == 'admin'}" var="isAdmin">
|
|
|
+ <c:out value="welcome"/>
|
|
|
+</c:if>
|
|
|
+
|
|
|
+<c:out value="${isAdmin}"/>
|
|
|
+```
|
|
|
+
|
|
|
+## 7、JavaBean
|
|
|
+
|
|
|
+***
|
|
|
+
|
|
|
+实体类
|
|
|
+JavaBean有特点的写法:
|
|
|
+* 必须定义无参构造
|
|
|
+* 属性必须私有化
|
|
|
+* 必须有对应的get/set方法
|
|
|
+
|
|
|
+一般用来和数据库字段做映射ORM;
|
|
|
+ORM:对象关系映射
|
|
|
+
|
|
|
+* 表->类
|
|
|
+* 字段->属性
|
|
|
+* 行记录->对象
|
|
|
+
|
|
|
+People表
|
|
|
+| id | name | age | address |
|
|
|
+| ---- | ---- | ---- | ------- |
|
|
|
+| 1 | tom | 10 | 西安 |
|
|
|
+| 2 | lin | 19 | 西安 |
|
|
|
+| 3 | pet | 13 | 西安 |
|
|
|
+
|
|
|
+```java
|
|
|
+public class People {
|
|
|
+ private int id;
|
|
|
+ private String name;
|
|
|
+ private int age;
|
|
|
+ private String address;
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+```jsp
|
|
|
+<jsp:useBean id="people" class="com.entity.People" scope="page"/>
|
|
|
+
|
|
|
+<jsp:setProperty name="people" property="address" value="西安"/>
|
|
|
+<jsp:setProperty name="people" property="id" value="1"/>
|
|
|
+<jsp:setProperty name="people" property="age" value="3"/>
|
|
|
+<jsp:setProperty name="people" property="name" value="tom"/>
|
|
|
+
|
|
|
+<jsp:getProperty name="people" property="address"/>
|
|
|
+<jsp:getProperty name="people" property="id"/>
|
|
|
+<jsp:getProperty name="people" property="age"/>
|
|
|
+<jsp:getProperty name="people" property="name"/>
|
|
|
+```
|
|
|
+
|
|
|
+## 8、MVC三次架构
|
|
|
+
|
|
|
+***
|
|
|
+
|
|
|
+什么是MVC:model view controller 模型、 视图、 控制器
|
|
|
+
|
|
|
+### 8.1、早些年
|
|
|
+
|
|
|
+
|
|
|
+用户直接访问控制层,控制层直接操作数据库;
|
|
|
+```
|
|
|
+servlet--CRUD--->数据库
|
|
|
+弊端:程序十分臃肿,不利于维护
|
|
|
+servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码
|
|
|
+```
|
|
|
+
|
|
|
+### 8.2、MVC三层架构
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Model
|
|
|
+* 业务处理:业务逻辑(Service)
|
|
|
+* 数据持久层:CRUD(Dao)
|
|
|
+
|
|
|
+View
|
|
|
+* 展示数据
|
|
|
+* 提供链接发起Servlet请求(a,form, img)
|
|
|
+
|
|
|
+Controller(Servlet)
|
|
|
+* 接受用户的请求:req,参数和session信息
|
|
|
+* 交给业务层处理响应的代码
|
|
|
+* 控制视图的跳转
|
|
|
+
|
|
|
+```
|
|
|
+登录----》接受用户的请求---》处理用户的请求(获取参数:username,password)----》交给业务层处理登录业务(判断用户名密码是否正确:事务)-----》Dao层查询用户名和密码是否正确----》数据库
|
|
|
+```
|
|
|
+
|
|
|
+## 9、Filter
|
|
|
+
|
|
|
+***
|
|
|
+
|
|
|
+Filter:过滤器,用来过滤网站的数据;
|
|
|
+* 处理中文乱码
|
|
|
+* 登录验证
|
|
|
+
|
|
|
+
|
|
|
+Filter开发步骤:
|
|
|
+1.
|
|
|
+
|
|
|
+
|
|
|
+
|