javaweb第一季笔记【siki学院】

目录

什么是xml?
xml用来干什么?
xml语法
对xml的约束:DTD、Schema
什么是dtd?
schema约束
schema文档的使用
xml解析方式
javaweb和javaee
JSP是什么
Tomcat基本使用
新建一个dynamic web project
jsp定义表达式和内容输出表达式
什么是http协议
请求的转发
参数在两个服务端页面间的传递
中文乱码
session会话
application
servlet
servlet中获得jsp内置对象
web.xml配置servlet路径
请求转发与重定向
eclipse常用快捷键

什么是xml?

可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
html也是标记语言,html里面的标记是固定的,每个标记有自己的功能。
xml里面的标记我们可以自己定义。

它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。
 

xml用干什么?

1.编写配置文件
在后续的web开发中很多配置文件,都使用xml来编写。 jsp servlet后续框架都需要配置文件 配置我们使用的框架或插件的功能
使用xml编写配置文件,结构清晰,配置清楚。
2.数据传输
假如有一个手机APP客户端,是一个网上商城的软件,打开软件需要显示商品列表。那么这个商品列表的数据就可以使用xml来传输。
 

xml语法

大小写敏感
有开始标记必须有结束标记(标记是成套的)
标记可以是单标记,但必须自己闭合
标记可以包含标记(可以嵌套,嵌套成对嵌套)
标记可以有自己的属性(属性值必须加引号)
必须有根标记,也叫做根元素。(根元素是其他元素的父元素)

xml文档声明

<?xml version="1.0" encoding="UTF-8"?>

必须放在第一行
 

对XML的约束:DTD,Schema

平时编写xml文件的时候,是没有固定规则的,标记名,属性名,属性值我们可以按照我们的需求随意来开发。
但是当我们使用别人的框架的时候,一般需要提供一个配置文档,来配置我们使用这个框架的时候的一些属性。这个时候,这个配置文档就需要按照框架的要求来编写。框架的要求就是对xml文档的约束。我们可以通过DTD和Schema文档来编写对文档的约束
定义了约束之后,可以防止我们写错文档
比如某个配置文件,按照相同的约束来书写,更容易让别人阅读和别的程序读取。
 

什么是DTD?

DTD用来约束xml文档,规定xml文档中元素的名称,子元素的名称和顺序,元素的属性。
一般来说我们很少编写自己的DTD文档约束,我们一般会遵循框架提供的DTD约束文档来编写配置文件。比如struts框架会给我们提供dtd文档
当我们编写的xml不符合DTD约束规则的时候,会报错,方便我们找错。
怎么引入DTD约束
1,内部引入 2,外部引入(本地)
3,外部引入(网络)
示例:Struts框架的配置文档的首行
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
 

schema约束

(比DTD牛逼,替代DTD)
schema约束文档本身也是一个xml文档,后缀为xsd
语法更加容易阅读,更加友好
功能更加强大,类型更加完善
里面有命名空间
同样,我们也不需要写schema约束文档,我们只需要直接使用框架提供给我们的约束文档即可。
 

schema文档的使用

schema文档使用http://www.w3school.com.cn/schema/schema_howto.asp

<?xml version="1.0"?>
<note
xmlns="http://www.w3school.com.cn"                    --默认命名空间
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   :xsi为起别名
xsi:schemaLocation="http://www.w3school.com.cn note.xsd">    --引用的命名空间  引用的xsd文档(xsd文档可为url)
< xsi:to>George</ xsi:to>  不写别名 则为默认
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

 

xml解析方式

DOM方式解析,就是把xml文档加载到内存形成树形结构,可以进行增删改的操作。
我们可以使用dom4j来进行dom方式的解析。

dom4j是一个开源是xml解析软件包。
首先去下载dom4j https://dom4j.github.io/
怎么引入jar包?
比如把dom4j放到项目的lib文件夹下,本地下载位置ctrl+C,到lib V一份,然后jar包右击build path-> add to build path

dom4j解析xml 代码
https://blog.csdn.net/qq_24065713/article/details/77970469
 

Java Web和Java EE的区别

Java Web就是以Java语言为基础,使用JSP和Servlet来开发Web程序。Web程序简单理解就是我们平时说的网站。
Java EE是Java的企业级应用,里面包含的功能比较多。JavaEE是个大杂烩,包括Applet、EJB、JDBC、JNDI、Servlet、JSP等技术的标准,运行在一个完整的应用服务器上,用来开发大规模、分布式、健壮的网络应用。这里的网络应用也可以理解为我们平时使用的网站。
可以粗略地认为JavaWeb就是JavaEE的一部分,是成为JavaEE大师过程中的第一站。
https://www.zhihu.com/question/52002845/answer/364360839

SSM SSH框架
SSM:Spring SpringMVC MyBatis
SSH:Spring Struts Hibernate
 

JSP是什么

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计
用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
百度百科
简单来说JSP = html + Java代码
在一个正常的网页上,加入java代码之后,就成为了一个jsp页面。
 

Tomcat基本使用

哪个目录放置项目
开发好的应用放在tomact webapps目录下部署
怎么启动tomcat
启动 bin/startup.bat     关闭 bin/shutdown.bat
这个需要在cmd运行,需要环境变量配置 不推荐
推荐 在eclipse启动tomcat ,不需要环境变量配置
 

新建一个 dynamic web project项目

1.默认编码
默认的编码 ISO-8859-1 导致中文乱码
乱码问题以及怎么解决 utf-8
eclipse更改默认编码:
window->preferences->web->JSP Files 更改encoding为utf-8

2.怎么在jsp页面上写java代码
<%
//java代码
%>

3.out与system.out区别
浏览器访问jsp页面,java代码首先执行,然后显示html代码,java代码可以控制html的显示
out.println();//输出到客户端 这个out是jsp内置对象
system.out.println();//显示 到服务器端 console控制台
 

jsp定义表达式和内容输出表达式

定义表达式<%! %>
普通表达式<% %>
内容输出表达式<%= %>
=后面可以是变量或方法(返回方法的返回值),结果显示到网页

<%!   int count=0;%>        //成员变量
<%        int number=0;   //局部变量
          out.println("number:"+number);
          out.println("count:"+count);
%>

count 为成员变量,number为普通变量
页面每刷新一次,count的值就会加一

 

什么是http协议

http协议规定了我们在发起http请求的时候,这个请求的数据包里面都包含了什么样的数据
以及数据按照什么样的先后顺序存放在数据包里面。

http请求和http响应
https://blog.csdn.net/chen1403876161/article/details/51546653
请求和响应本质上都是数据包

 

请求的转发

’每次请求都会创建一个request对象
获取参数 request.getParameter(“age”)返回的是字符串
服务端获得客户端传来的参数

请求转发到login.jsp页面
request.getRequestDispatcher(“login.jsp”).forward(request, response);
1.首先是首页(注册页)index.jsp 点击注册跳到do_register.jsp页面
2.do_register.jsp页面处理注册请求
3.注册成功后,请求转发到login.jsp登录页面
url显示register_do.jsp
请求的转发只有一个request对象!!!

 

参数在两个服务端页面间的传递

在register_do.jsp中
request.setAttribute(“message”,“注册成功,请登录!”);
request.getRequestDispatcher(“login.jsp”).forward(request,response);
在login.jsp中
String msg=request.getAttribute(“msg”).toString(); request.getAttribute(“msg”);返回的是对象!!!

中文乱码

情形一:
默认的编码 ISO-8859-1 导致中文乱码
乱码问题以及怎么解决 utf-8
eclipse更改默认编码:
window->preferences->web->JSP Files 更改encoding为utf-8
情形二:
String sex=request.getParameter(“sex”);
System.out.println(new String(sex.getBytes(“iso-8859-1”),“utf-8”));
=》
String sex=new String(request.getParameter(“sex”).getBytes(“iso-8859-1”),“utf-8”);
情形三:
request.setCharacterEncoding(“utf-8”);
之后再去取得参数。
 

session会话

一个客户端创建一个session对话
session销毁:长时间不与服务器进行交互、关闭浏览器、关闭电脑

login_do.jsp
session.setAttribute(“user”, user);

session可在任何页面访问
login.jsp和register.jsp页面
Object o=session.getAttribute(“user”);
if(o!=null){
User user=(User) o;
out.println(“当前登录用户:”+user.getUsername()+"
");
}

personcenter.jsp
User user=(User)session.getAttribute(“user”);

jsp九大内置对象https://blog.csdn.net/qq_40587575/article/details/79810019
 

application

application可以传递参数,但不推荐,application是所有客户端共享的,不安全。
application统计网站登录的数据
数据是所有客户端共享的

login_do.jsp页面

int number=0;
if(application.getAttribute("userNumber")!=null){
	number=(Integer)application.getAttribute("userNumber");
}
number++;
application.setAttribute("userNumber",number);

强转之前一定要判断key是否为空

index.jsp

Object o2=application.getAttribute("userNumber");
if(o2!=null){
	out.println("当前登录用户:"+o2+"个!<br/>");
}

 

servlet

怎么访问Servlet?
Servlet是一个java类,我们需要给类添加一个对应的路径
@WebServlet("/register_do")
配置该Servlet类路径为register_do

servlet多用来做逻辑处理,处理完后把请求转发给jsp
 

servlet中获得jsp内置对象

1.用this.getServletContext()方法获得application
比如ServletContext application=this.getServletContext();
2.request.getSession();获得session
 

web.xml配置servlet路径

当我们部署一个项目的时候,其实就是把项目放到tomacat下的webapps目录下的
WEB-INF下 web.xml配置servlet
web.xml
我们创建项目的版本和web.xml版本保持一致version=“ ”;
按住ctrl后可以打开我们写的类,则说明没有配置错

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

   <servlet>
  		 <servlet-name>LoginServlet</servlet-name>
  	 	 <servlet-class>com.mine.servlet.LoginServlet</servlet-class>
   </servlet>
   <servlet-mapping>
  		 <servlet-name>LoginServlet</servlet-name>
   		<url-pattern>/login_do</url-pattern>
   </servlet-mapping>

</web-app>

注意
1.<servlet-name>只是给配置的这个类起个名字
确保<servlet><servlet-mapping>下的<servlet-name>保持一致
2.<servlet-class>是要配置的类  <url-pattern>是配置的访问路径
3.配置的路径不要忘记加/ !!!
 

请求转发与重定向

response.sendRedirect(“login.jsp”);

if(isSuccess){
			request.setAttribute("message","注册成功,请登录!");
			//请求转发
			//request.getRequestDispatcher("login.jsp").forward(request,response);	
			//重定向
			response.sendRedirect("login.jsp");		
		}else{
			request.setAttribute("message","注册失败,用户重复!");
			request.getRequestDispatcher("register.jsp").forward(request,response);			
		}

请求转发与重定向
相同点:把一个新的页面返回给客户端
区别:
请求转发:直接把这个页面返回给客户端,但是url不变
重定向:让客户端发起一个新的请求返回页面,url是返回页面的
request.setAtribute()提示的信息,重定向无法得到
在这里插入图片描述
 

eclipse常用快捷键

alt+/ 引入包名
引入注解
ctrlj+鼠标左键 查看源码

参考教程
http://www.sikiedu.com/course/214

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值