JSP详解
一、JSP基础概念
1.软件架构
B/S架构:Browser/Server,浏览器-服务器
最大的优点就是:一次部署,处处访问。
C/S架构:Client/Server,客户端-服务器
功能、事件丰富,可以完整的使用计算机的一系列资源。但是升级维护不方便。
2.B/S架构工作原理
采用请求+相应的工作模式进行交互。
1.输入打开浏览器,输入网址,回车。
2.请求将由客户端浏览器发送至WEB应用服务器,进行处理。
3.WEB应用服务器将响应的结果(html\css\js\image...)发送回客户端浏览器
4.浏览器渲染解析html,将页面呈现出来。
3.URL
定义:统一资源定位符。通过URL来寻找网络资源。
格式:协议部分 主机地址 目标资源地址 参数
示例:http://www.cnblogs.com/java/articlelist.jsp?key=tomcat
解释:协议部分:http协议
主机地址:www.cnblogs.com
资源地址:java/articlelist.jsp
参数部分:key=tomcat
注意:http协议的默认端口是:80。
4.web服务器
是可以向发出请求的浏览器提供文档的程序。提供网上的信息浏览服务。
常见的WEB服务器:IIS、Tomcat、WebLogic、Apache、Nginx......
5.Tomcat
下载地址:
http://tomcat.apache.org/
目录结构:
1.bin目录:用于存放tomcat的一些核心组件、启动以及停止的命令。
2.conf目录:TOMCAT的配置目录,里面存放了tomcat的一系列配置文件。
3.lib目录:存放TOMCAT运行时需要的所有Jar包
4.logs目录:存放tomcat启动、运行过程中产生的所有日志文件。
5.temp目录:临时目录
6.webapps目录:web网站发布的目录
7.work目录:tomcat中发布的动态网站的工作目录。
如何修改Tomcat的默认端口:
1.打开Tomcat目录,找到conf目录下的server.xml文件;
2.找到配置节<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
3.将port修改为目标端口。
6.在eclipse中配置tomcat
1>.Window -> Pereferences 打开对话框
2>.展开Server节点,选择Runtime Environment。
3>.从右侧点击Add按钮,从对话框中选择Apache Tomcat 7.0,点击下一步
4>.在弹出的Tomcat Server对话框中选择之前Tomcat的解压目录。点击完成即可。
7.eclipse创建的动态网站目录结构介绍
1>.java Resrouces -> src 目录:存放所有的java源文件
2>.WebContent 目录:存放网站需要的jsp页面文件、html文件、css、js、image等资源。
3>.build 目录:java文件、jsp文件的编译目录
4>.Web Content -> WEB-INF 目录:该目录中的所有文件不会直接被客户端(浏览器)访问。
所以一些敏感的资源文件可以放到本目录。比如网站的配置文件web.xml文件就存在于该目录。
8.在eclipse中如何发布web站点
1>.打开Server窗口
2>.右击Server窗口的空白区域,依次选择:New -> Server,弹出新建服务器窗口
3>.从窗口中选择Tomcat v7.0 Server,点击Finishe即可。
4>.双击新添加的Tomcat v7.0 Server节点,即可弹出新的对话框。
从对话框中选择Server Locations,选中第二项:Use Tomcat installation;
同时,Server Path修改为:webapps。
最后Contrl + S保存。
5>.右击Tomcat,选择“Add And Remove”
从对话框的左侧选择目标网站,点击Add按钮即可添加到右侧。
最后点击Finish。
9.解决JSP中文乱码的问题
1>.Window -> Pereferences 打开对话框,选择General -> Content Types:
从右侧选择Text -> JSP,然后在最下面的文本框中将ISO-8859-1改为UTF-8
2>.选择General -> Workspace
从右侧最下面,选择text file encoding,改为:UTF-8。
3>.选择Web -> JSP Files节点
从右侧Encoding选择ISO 10646/Unicode(UTF-8)
最后点击OK即可。
10.JSP
JSP(Java Server Pages)。JSP是运行在服务器端的Java页面。使用HTML嵌套Java代码实现。
11.在JSP中编写JAVA代码
1>. <% ... %>
在里面可以写多行java代码,每行用分号结尾。注意:不能定义方法。
2>. <%! ... %>
在里面只能定义全局变量和方法。
3>. <%= ... %>
向页面输入内容。等价与<% out.write("abc"); %> == <%= "abc" %>
12.如果在jsp页面中导入其他的包
在page指令中添加属性import,值为包名。
<%@ page import="java.util.*" %>
13.配置默认页
例如,将index.jsp配置成默认页。
1>.打开web.xml文件,修改welcome-file-list;
2>.在第一个节点中添加<welcome-file>index.jsp</welcome-file>
注意:每次web.xml被修改以后,要重启Tomcat。
14.get和post的区别
1.get会将参数跟到url地址后面;post则不会。
2.get提交的数据有大小限制,Post则不会。
3.get提交不安全,post提交安全。
4.get方式有利于Url传播,post则不利于url传播。
15.Http状态码
200 请求成功
404 请求的资源不存在
500 服务器内部错误
302 重定向
二、JSP九大内置对象
1.请求对象:request
request.getRemoteAddr() 获取客户端的IP地址。
request.setAttibute(String, Object) 存储数据
Object request.getAttribute(String) 获取数据
String 值 = request.getParameter("参数名"); 获取参数的单个值
String[] 值s = request.getParameterValues("参数名");获取参数的多个值
注意:只有在同一次请求中存储的数据才能共享。
2.输出对象:out
3.响应对象:response
转发和重定向
重定向:客户端会先后发送2次请求到服务器。
response.sendRedirect("welcome.jsp");
重定向是客户端行为。
转发:客户端向服务器发送一次请求,服务器端再请求另外一个页面地址,最后将结果响应给客户端
request.getRequestDispatcher("login.jsp").forward(request, response);
转发是服务器行为。
4.应用程序对象:application
application是服务器开辟的一块共享数据存储区域。所有的会话均可以从application读写数据。
application中存储的数据永远有效(服务器关闭时数据才会失效)。
applicaton.setAttribute(String key, Object value);//存或修改数据
Object applicaton.getAttribute(String key); //读取数据
applicaton.removeAttribute(String key);//移除数据
5.会话对象:session
客户端第一次向服务器发送请求以后,会话就会建立。当把浏览器关闭掉,重新再打开浏览器,就算是另一次新会话了。服务器会为每一个会话建立单独的数据存储区域。
session中存储的数据有有效期的限制。session默认超时时间为30分钟。
更改默认超时时间有两种方式:
方式一:通过配置修改
在web.xml文件中调整session失效时间:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
方式二:通过Java代码修改
session.setMaxInactiveInterval(30*60);//以秒为单位
session其他方法介绍
1.session.setAttribute(String key, Object value);//存或修改
2.Object session.getAttribute(String key); //读取数据
3.session.removeAttribute(String key);//移除数据
4.session.invalid();//设置session失效(会话失效并且该会话所有存储的数据都将丢失)
6.页面上下文对象:pageContext
7.页面对象:page
8.配置对象:config
9.异常对象:exception
三、Cookie介绍
1>.cookie将数据存储客户端计算机。
Cookie cookie1 = new Cookie(String, String);
向客户端写cookie,使用response:response.addCookie(...);
获取客户端的cookie,使用request:request.getCookies();
2>.Cookie也有生命周期(有效期),通过cookie.setMaxAge(int seconds)。
如果seconds=0,表示当关闭浏览器后,cookie自动失效;
如果seconds<0,表示从客户端删除cookie;
如果seconds>0,表示cookie失效的具体时间。
注意:JSESSIONID是系统系统添加的一个cookie,每次会话创建后JSESSIONID就会添加到cookie中。
3>.对于一些不敏感(不重要)的业务数据,并且数据量较小,就可以存储到cookie中。
4>.cookie、session、application在存储数据方面的差异。
相同点:
cookie、session、application都可以存储数据。
不同点:
1.session和application都是把数据存储到服务器端;
2.cookie将数据存储到客户端;
3.session是用户会话级别,不同用户不能共享数据;application是全局的,所有用户共享数据。
4.session和application会对服务器造成压力,而cookie不会。
四、JSP乱码问题(java后台乱码)
JSP默认采用ISO-8859-1编码,该编码不支持中文等字符。所以需要在后台设置编码格式。
以GET方式发送请求时的编码解决方案:
第一种:String title = request.getParameter("advtitle");
String title1 = new String(title.getBytes("ISO-8859-1"), "UTF-8");
第二种:在tomcat的conf->server.xml中修改Connector,增加URIEncoding属性。
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
以POST方式发送请求时的编码解决方案:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
五、JDBC
1.基本概念
定义:Java DataBase Connectivity。java数据库连接技术。
用途:用于实现java程序和各种数据库(Oracle|Mysql|Sql Server...)的操作。
JDBC提供了一组类和接口(API),它们位于java.sql以及javax.sql包中。
2.JDBC访问数据库的步骤
1>.加载驱动程序
首先将驱动的jar包文件拷贝到web项目的lib目录中
Class.for("驱动程序类");//加载驱动程序
2>.获取连接对象
连接字符串:jdbc:mysql://127.0.0.1:3306/newsdb?user=root&password=123456
Connection connection = DriverManager.getConnection("连接字符串");
3>.创建Statement,执行SQL语句
Statement stmt = connection.createStatement();
int count = Statement.executeUpate(String sql);
注意:
executeUpdate方法处理的SQL包括DML(insert|update|delete)和DDL(Create|ALTER|DROP)
executeUpate()方法的返回值为int
insert|update|delete返回值为大于0的值,表示成功
create|alter|drop返回值永远为0
Statement.executeQuery(String sql);
注意:
executeQuery方法处理的SQL包括DQL(select)
4>.返回ResultSet结果或者数据库受影响的行数
ResultSet set = stmt.executeQuery();
while(set.next()==true){
//循环一次取一条
set.getString(arg0);//取字符串
set.getInt(arg0);//取整数
set.getDouble(columnLabel);//取double
set.getFloat(columnIndex);//取float
set.getDate(columnIndex);//取年月日
set.getTime(columnIndex);//取时分秒
set.getTimestamp(columnIndex)//取年月日时分秒
}
5>.关闭连接
connection.close();
3. SQL注入
用户输入一些特殊的字符,让程序中动态拼接的SQL语句,改变原来执行的含义,最终获取非预期的结果。
导致SQL注入的原因就在于:程序中的SQL语句是通过字符串动态拼接的。
例如:
String sql = "select * from userinfo where username='"+uname+"' and password='"+upass+"'";
如果uname = zhangsan upass = 123456,那么上述sql变量的值为:
select * from userinfo where username='zhangsan' and password='123456'
如果uname = 1' or 1=1 or '1 upass = 123456,那么上述sql变量的值为:
select * from userinfo where username='1' or 1=1 or '1' and password='123456'
4.如何避免程序中被SQL注入?
使用参数化查询。具体来说,就是在程序中尽量不要使用Statement类,而采用PreparedStatement类。
Statement是PreparedStatement的父类。
//SQL语句中,每一个参数使用?作为占位符
String sql = "select count(*) from userinfo where username=? and userpass=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, userpass);
ResultSet set = stmt.executeQuery();
六、分层开发
1.分层开发
在项目实际开发过程中,会将整个项目从上到下划分为界面层、业务逻辑层、数据层。
三层开发是项目开发实践中典型的开发模式。
目的:实现高内聚、低耦合。
2.各层功能
界面层
功能:负责数据展示,搜集用户输入。即和用户进行交互的层。
界面层一般是指jsp页面、html页面等。
业务逻辑层
功能:负责处理功能模块的业务逻辑,以及界面层和数据层的数据流转。
添加类的原则:
根据功能模块来添加类。比如有用户管理模块,那么则可以添加UserManagerService类。
数据层
功能:和数据库进行交互。
一般在数据层会编写SQL语句;JDBC;Hibernate、mybatis。
添加类的原则:
每张数据表均添加一个对应的数据操作类。比如用户表userinfo,则添加UserInfoDao类。
实体层
针对数据表创建出来的实体类;+ 用户自定义的一些实体类
3.各个层之间的调用关系
界面层 调用 业务逻辑层;
业务逻辑层 调用 数据层;
数据层 操作 数据库;
注意:调用的意思,就是在代码中创建对应的类对象,然后通过对象调用方法。
4.分层开发的优缺点
优点:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、利于各层逻辑的复用。
缺点:
1、降低了系统的性能
2、增加了程序的复杂度
3、有时会导致级联的修改。
分享到:
相关推荐
**JSP(Java Server Pages)详解** JSP是Java平台上的动态网页技术,它允许开发者在HTML、XML或其他标记语言中嵌入Java代码,从而实现动态内容的生成。JSP的核心概念包括以下几点: 1. **JSP元素**:JSP页面由静态...
在JSP中,有九个内置对象,它们是JSP引擎在编译JSP页面时自动创建并注入到每个请求处理过程中的。这些内置对象极大地简化了开发者的编程工作,无需显式创建或实例化。以下是JSP的九大内置对象及其详细解释: 1. **`...
java web jsp 详解
【JSP详解含JavaBean和EL表达式】 JavaServer Pages(JSP)是Java平台上的一个标准技术,用于创建动态Web页面。它允许开发者将HTML和Java代码混合编写,简化了网页开发流程。JSP的核心在于它能将业务逻辑、表示层和...
用eclipse新建JSP详解
《Core JSP详解》是一部经典的JSP教程,英文版,深入浅出地讲解了JSP(JavaServer Pages)及其与Servlet相关的技术。在Java Web开发领域,JSP和Servlet是构建动态网站和Web应用程序的核心技术。下面将详细阐述这两个...
**JSP详解教案** 在IT行业中,Java Server Pages(JSP)是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,从而实现服务器端的业务逻辑处理。本教案将深入探讨JSP的核心概念、运行原理以及与之相关的...
JSP的特点 1、JSP里面可以嵌入Java代码 2、在运行的时候JSP被容器自动翻译成为一个servlet 3、不需要在配置文件里面配置(当然配置也可以) 4、文件被修改之后,自动被重新编译 5、Servlet生成静态页面比较麻烦,...
**JSP应用开发详解** JavaServer Pages(JSP)是一种基于Java技术的动态网页开发工具,它允许开发者在HTML、XML或者其他标记语言中嵌入Java代码,以实现服务器端的程序逻辑。JSP的出现极大地简化了Web应用程序的...
**JSP应用开发详解第三版源代码分析** 在IT行业中,Java Server Pages(JSP)是一种广泛用于构建动态web应用程序的技术。它允许开发者将HTML、CSS、JavaScript与Java代码混合编写,以实现服务器端的逻辑处理。《JSP...
jsp应用开发详解jsp应用开发详解jsp应用开发详解
【JSP应用开发详解】 JavaServer Pages(JSP)是一种基于Java的技术,用于创建动态网页。JSP在Web开发领域中扮演着重要角色,因为它允许开发者将HTML代码与Java代码混合编写,使得网页内容能够根据服务器端的数据...
jsp语法详解 jsp语法是Java服务器页面(JavaServer Pages)的缩写,是一种基于Java技术的服务器端脚本语言。jsp语法用于在Web服务器上生成动态网页。jsp文件是一种特殊的html文件,它可以包含-java代码、html代码和...
#### 三、JSP详解 **JSP(JavaServer Pages)**是一种基于Java的动态网页技术标准,它将Java代码和静态网页内容混合在一起创建动态网页。 - **JSP页面元素:** - 脚本元素:用于编写Java代码; - 指令元素:设置...
《图书管理系统JSP详解与实践》 图书管理系统是IT领域中常见的应用系统,尤其是在教育、图书馆及信息管理等场景下有着广泛的应用。本系统采用JSP(Java Server Pages)技术进行开发,它是一种动态网页技术,能够将...
### Servlet与JSP深入详解:基于Tomcat的Web开发 #### 一、Servlet技术概述 Servlet是一种用Java编写的服务器端应用程序接口(API),它扩展了Java Web开发的功能。Servlet可以响应HTTP请求,并且能够处理复杂的...
<JSP语法详解> e book