Java Web 笔记(3)(java设计模式)

网友投稿 284 2022-06-21


8、JSP

8.1、什么是JSP

Java Server Pages : Java服务器端页面,也和Servlet一样,用于动态Web技术!

最大的特点:

写JSP就像在写HTML

区别:

HTML只给用户提供静态的数据

JSP页面中可以嵌入JAVA代码,为用户提供动态数据;

8.2、JSP原理

思路:JSP到底怎么执行的!

代码层面没有任何问题

服务器内部工作

tomcat中有一个work目录;

IDEA中使用Tomcat的会在IDEA的tomcat中生产一个work目录

我电脑的地址:

C:\Users\Administrator\.IntelliJIdea2018.1\system\tomcat\Unnamed_javaweb-session-cookie\work\Catalina\localhost\ROOT\org\apache\jsp

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!

JSP最终也会被转换成为一个Java类!

JSP 本质上就是一个Servlet

//初始化

public void _jspInit() {

}

//销毁

public void _jspDestroy() {

}

//JSPService

public void _jspService(.HttpServletRequest request,HttpServletResponse response)

判断请求

内置一些对象

final javax.servlet.jsp.PageContext pageContext; //页面上下文

javax.servlet.http.HttpSession session = null; //session

final javax.servlet.ServletContext application; //applicationContext

final javax.servlet.ServletConfig config; //config

javax.servlet.jsp.JspWriter out = null; //out

final java.lang.Object page = this; //page:当前

HttpServletRequest request //请求

HttpServletResponse response //响应

输出页面前增加的代码

response.setContentType("text/html"); //设置响应的页面类型

pageContext = _jspxFactory.getPageContext(this, request, response,

null, true, 8192, true);

_jspx_page_context = pageContext;

application = pageContext.getServletContext();

config = pageContext.getServletConfig();

session = pageContext.getSession();

out = pageContext.getOut();

_jspx_out = out;

以上的这些个对象我们可以在JSP页面中直接使用!

在JSP页面中;

只要是 JAVA代码就会原封不动的输出;

如果是HTML代码,就会被转换为:

out.write("\r\n");

这样的格式,输出到前端!

8.3、JSP基础语法

任何语言都有自己的语法,JAVA中有,。 JSP 作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可!),Java所有语法都支持!

JSP表达式

<%--JSP表达式

作用:用来将程序的输出,输出到客户端

<%= 变量或者表达式%>

--%>

<%= new java.util.Date()%>

jsp脚本片段

<%--jsp脚本片段--%>

<%

int sum = 0;

for (int i = 1; i <=100 ; i++) {

sum+=i;

}

out.println("

Sum="+sum+"

");

%>

脚本片段的再实现

<%

int x = 10;

out.println(x);

%>

这是一个JSP文档

<%

int y = 2;

out.println(y);

%>


<%--在代码嵌入HTML元素--%>

<%

for (int i = 0; i < 5; i++) {

%>

Hello,World <%=i%>

<%

}

%>

JSP声明

<%!

static {

System.out.println("Loading Servlet!");

}

private int globalVar = 0;

public void kuang(){

System.out.println("进入了方法Kuang!");

}

%>

JSP声明:会被编译到JSP生成Java的类中!其他的,就会被生成到_jspService方法中!

在JSP,嵌入Java代码即可!

<%%>

<%=%>

<%!%>

<%--注释--%>

JSP的注释,不会在客户端显示,HTML就会!

8.4、JSP指令

<%@page args.... %>

<%@include file=""%>

<%--@include会将两个页面合二为一--%>

<%@include file="common/header.jsp"%>

网页主体

<%@include file="common/footer.jsp"%>


<%--jSP标签

jsp:include:拼接页面,本质还是三个

--%>

网页主体

8.5、9大内置对象

PageContext 存东西

Request 存东西

Response

Session 存东西

Application 【SerlvetContext】 存东西

config 【SerlvetConfig】

out

page ,不用了解

exception

pageContext.setAttribute("name1","秦疆1号"); //保存的数据只在一个页面中有效

request.setAttribute("name2","秦疆2号"); //保存的数据只在一次请求中有效,请求转发会携带这个数据

session.setAttribute("name3","秦疆3号"); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器

application.setAttribute("name4","秦疆4号"); //保存的数据只在服务器中有效,从打开服务器到关闭服务器

request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的!

session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;

application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;

8.6、JSP标签、JSTL标签、EL表达式

javax.servlet.jsp.jstl

jstl-api

1.2

taglibs

standard

1.1.2

EL表达式: ${ }

获取数据

执行运算

获取web开发的常用对象

JSP标签

<%--jsp:include--%>

<%--

http://localhost:8080/jsptag.jsp?name=kuangshen&age=12

--%>

JSTL表达式

JSTL标签库的使用就是为了弥补HTML标签的不足;它自定义许多标签,可以供我们使用,标签的功能和Java代码一样!

格式化标签

SQL标签

XML 标签

核心标签 (掌握部分)

JSTL标签库使用步骤

引入对应的 taglib

使用其中的方法

在Tomcat 也需要引入 jstl的包,否则会报错:JSTL解析错误

c:if

Title

if测试


<%--

EL表达式获取表单中的数据

${param.参数名}

--%>

<%--判断如果提交的用户名是管理员,则登录成功--%>

<%--自闭合标签--%>

c:choose c:when

<%--定义一个变量score,值为85--%>

你的成绩为优秀

你的成绩为一般

你的成绩为良好

你的成绩为不及格

c:forEach

<%

ArrayList people = new ArrayList<>();

people.add(0,"张三");

people.add(1,"李四");

people.add(2,"王五");

people.add(3,"赵六");

people.add(4,"田六");

request.setAttribute("list",people);

%>

<%--

var , 每一次遍历出来的变量

items, 要遍历的对象

begin, 哪里开始

end, 到哪里

step, 步长

--%>




9、JavaBean

实体类

JavaBean有特定的写法:

必须要有一个无参构造

属性必须私有化

必须有对应的get/set方法;

一般用来和数据库的字段做映射 ORM;

ORM :对象关系映射

表--->类

字段-->属性

行记录---->对象

people表

id

name

age

address

1

秦疆1号

3

西安

2

秦疆2号

18

西安

3

秦疆3号

100

西安

class People{

private int id;

private String name;

private int id;

private String address;

}

class A{

new People(1,"秦疆1号",3,"西安");

new People(2,"秦疆2号",3,"西安");

new People(3,"秦疆3号",3,"西安");

}

过滤器

文件上传

邮件发送

JDBC 复习 : 如何使用JDBC , JDBC crud, jdbc 事务

10、MVC三层架构

什么是MVC: Model view Controller 模型、视图、控制器

10.1、早些年

用户直接访问控制层,控制层就可以直接操作数据库;

servlet--CRUD-->数据库

弊端:程序十分臃肿,不利于维护

servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码

架构:没有什么是加一层解决不了的!

程序猿调用

|

JDBC

|

Mysql Oracle SqlServer ....

10.2、MVC三层架构

Model

业务处理 :业务逻辑(Service)

数据持久层:CRUD (Dao)

View

展示数据

提供链接发起Servlet请求 (a,form,img…)

Controller (Servlet)

接收用户的请求 :(req:请求参数、Session信息….)

交给业务层处理对应的代码

控制视图的跳转

登录--->接收用户的登录请求--->处理用户的请求(获取用户登录的参数,username,password)---->交给业务层处理登录业务(判断用户名密码是否正确:事务)--->Dao层查询用户名和密码是否正确-->数据库


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 类加载与实例化(java安装教程详细)
下一篇:0219 springmvc-拦截器和响应增强(02195553是什么电话号码)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~