emmm 总的来说,我python还没学会,为啥开始学java了呢 算了学吧
参考知乎:https://www.zhihu.com/question/37962386/answer/87758781
1、不同之处在哪?
2、各自的特点
3、通过MVC双剑合璧
既然JSP和Servlet都有自身的适用环境,那么能否扬长避短,让它们发挥各自的优势呢?答案是肯定的——MVC(Model-View-Controller)模式非常适合解决这一问题。
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller):
在JSP/Servlet开发的软件系统中,这三个部分的描述如下所示:
<figure>
<noscript><img src="https://pic4.zhimg.com/229cf9ff5b1729eaf408fac56238eeb3_b.png" data-rawwidth="842" data-rawheight="326" class="origin_image zh-lightbox-thumb" width="842" data-original="https://pic4.zhimg.com/229cf9ff5b1729eaf408fac56238eeb3_r.jpg"></noscript>
image
</figure>
MVC模式在Web开发中的好处是非常明显,它规避了JSP与Servlet各自的短板,Servlet只负责业务逻辑而不会通过out.append()动态生成HTML代码;JSP中也不会充斥着大量的业务代码。这大大提高了代码的可读性和可维护性。
1、是JAVA的Web应用的安全目录,所谓安全就是指客户端无法访问,服务端可以访问 2、包含文件
默认是8080 方法:修改conf/server.xml
是Java Server Pages的缩写,实现了在Java当中使用HTML标签。 是一种动态网页技术,符合JAVAEE标准。 其根本是一个简化的Servlet设计,与Servlet一样,在服务端执行。
什么是Servlet? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
Servlet架构 参考:http://www.runoob.com/servlet/servlet-intro.html
什么是JAVAEE? Java EE是Java平台企业版的简称(Java Platform, Enterprise Edition),用于开发便于组装、健壮、可扩展、安全的服务器端Java应用。Java EE建立于Java SE之上,具有Web服务、组件模型、以及通信API等特性,这些为面向服务的架构(SOA)以及开发Web2.0应用提供了支持。
*JSP:Java平台,跨平台性好,安全性高,适合开发大型、企业级Web应用程序,特别是分布式的计算框架(hadoop),比如电子银行、网上交易所…… *Asp.net:.Net平台,简单易学,直接拖组件,但是安全性和跨平台性差 *Php:简单高效,成本低、开发周期短,适合中小型企业Web应用开发(LAMP:Linux+Apache+MySQL+PHP)
配置tomcat服务器
删除target runtime配置的方法 window->preferences->server-> runtime environments
修改字符集的方法
由 静态内容、指令、表达式、小脚本、声明、注释组成
JSP页面组成部分
<%@page 属性1="属性值" 属性2="属性值1,属性值2" 属性n="属性值n"%>
page指令属性
还经常会出现一个pageEncoding属性,它是JSP文件本身的编码 而contentType的charset是服务器发给客户端的内容编码,contentType更常用
<%@page language="java" import="java.util.*" contentType="text/html;charset=utf-8"%>
<!-- HTML注释 -->
<%-- JSP注释 --%>
<%
//单行注释
/*多行注释*/
%>
<% Java代码 %>
一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。 在JSP文件中,必须先声明这些变量和方法然后才能使用它们。
<% !Java代码 %>
<% =表达式 %>
注意:表达式不以分号结束
是Web容器创建的一组对象,使用时不需要new 比如out.println(xxx)的 out
常用:out、request、response、session、application 不常用:page、pageContext、exception、config
用户发送请求(request) 服务器给用户响应(response)
实例 比如一个登录页面 用户输入用户名、密码,点击登录,向服务器发送请求,在请求对象中封装了用户名和密码 服务器接收用户的请求,判断用户名和密码,给客户端发送响应页面
理解缓冲区(Buffer)
内存中的一块区域用来保存临时数据
1、void println() //向客户端打印字符串
2、void clear() //清除缓存区的内容,如果再flush之后调用会发生异常
3、void clearBuffer() //清除缓存区的内容,如果再flush之后调用不会发生异常
4、void flush() //将缓冲区内容输出到客户端
5、int getBufferSize() //返回缓冲区以字节数的大小,如不设缓冲区则为0
6、int getRemaining() //返回缓冲区还剩多少可用
7、boolean isAutoFlush() //返回缓冲区满时,是自动清空还是抛出异常
8、void close() 关闭输出流
get和post提交方式的区别 <form name="" action="动作" method="get/post"></form>
常用方法
request.setCharacterEncoding("utf-8"); 解决中文乱码问题,但无法解决URL传递中文乱码问题,这种情况下只能通过修改tomcat配置文档server.xml才能解决
常用方法
PrintWriter的打印总是提前于out对象,可以用out.flush()调换顺序
请求重定向与请求转发
是符合某种特定的规范的Java类。 好处:解决代码重复编写,减少代码冗余,功能区分明确,提高代码维护性。
例子
动作元素为请求处理阶段提供信息; 简单来说就是一对标签,标签遵循XML元素的语法
src新建package→package新建class→在class里些方法→在jsp里import包并使用
useBeans、setProperty、getPropety
<jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
// 利用setProperty
<jsp:setProperty property="*" name="myUsers"/>
用户名:<%=myUsers.getUsername() %><br>
密码: <%=myUsers.getPassword() %><br>
//利用getProperty
用户名:<jsp:getProperty property="username" name="myUsers"/>
密码:<jsp:getProperty property="password" name="myUsers"/>
无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求。 但是当统一浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚刚那个浏览器。
Session 会话对象 JSP的九大内置对象之一 Cookie 客户端技术
1、什么是Cookie 是Web服务器保存在客户端的文本信息
2、应用场景
3、作用
4、在JSP里创建和使用Cookie
Cookie newCookie = new Cookie(String key,Object value);
response.addCookie(newCookie);
Cookie[] cookies = request.getCookies();
5、常用方法
String:因为是文本信息
6、Session与Cookie区别
1、include指令
//file是要包含的页面
<%@ include file="URL"%>
2、include动作
//page是要包含的页面
//flush是被包含的页面是否从缓冲区读取
<jsp:include page="URL" flush="true/false" />
3、include指令与动作对比(面试总问)
//URL是跳转的页面地址
<jsp:forward page="URL" />
等同于
request.getRequestDipatcher("/url").forward(request, response)
常常与<jsp:forward>一起使用,作为其子标签 在跳转页面时传递参数
<jsp:param name="参数名" value="参数值"/>