共计 3645 个字符,预计需要花费 10 分钟才能阅读完成。
Hello,明天给各位童鞋们分享 JSP,连忙拿出小本子记下来吧!
应用 eclipse 开发 JavaWeb 我的项目
为新建 Javaweb_yq 工作站减少 Server 实例
window > preference>server>Runtime Environment > add 增加本地 tomcat 所在装置目录
为我的项目 MyJspProject 增加 tomcat 和 jdk 反对
创立好 MyJspProject 我的项目
为该我的项目增加 tomcat 和 jdk 反对。我的项目右键 build path add library 退出以下反对:JRE System Library 和 APache Tomcat
增加 jdk 是因为 tomcat 的字节码文件须要在 JVM 上运行,而 jsp 须要 tomcat/lib 中的 servlet-api.jar。该 jar 可将 jsp 转为 servlet
3. 部署 tomcat
留神:个别倡议 将 eclipse 中的 tomcat 与 本地 tomcat 的配置信息放弃同步:即 将 eclipse 中的 tomcat 设置为托管模式。
操作形式是:【第一次】创立 tomcat 实例之后,双击,抉择 Server Location 的第二项
否则默认是将 tomcat 备份到我的项目中,配置信息是与 tomcat 独立的。
Jsp
对立字符编码
设置 jsp 文件的编码,该编码用于 Jsp 编译成 Java 文件时,通过 jsp 文件中的 pageEncoding 属性设置。
设置浏览器读取 jsp 文件编码,通过 jsp 文件中的 content 属性设置。
个别将上述设置成统一的编码,举荐应用 utf-8
文本编码,jsp 文件以什么编码模式保留。可有以下三种形式设置:
eclipse 全工作站设置。如下:
设置某个我的项目
设置独自文件
Jsp 的页面元素
Jsp 页面元素包含:HTML、Java 代码(也就是嵌套在脚本中的 javadiamante)、指令、正文
1.
脚本
<%
局部变量、java 语句
%>
2.
<%!
全局变量、定义方法
%>
3.
<%= 输入表达式 >
源代码:
f12 所看到的:
留神,out.println()不能回车;要想回车:“”,即 out.print()、<%= %> 能够间接解析 html 代码。
指令
page 指令
language 属性:jsp 页面应用的脚本语言
import:导入类
pageEncoding:Jsp 文件翻译成 java 文件时的编码
contentType:浏览器解析 jsp 时的编码
<%@ page language=”java” contentType=”text/html; charset=UTF-8″
pageEncoding="UTF-8" import="java.util.Date" %>
正文
html 正文 <!– –> , 能够被客户 通过浏览器查看源码 所察看到
java 正文 // /…/
jsp 正文 <%– –%>
Jsp 九大内置对象
内置对象即不须要 new 也能应用的对象。
out 对象
输入对象,向客户端输入内容
request 对象
申请对象;存储“客户端向服务端发送的申请信息”
request 对象常见办法:
response 对象
session 对象
因为 HTTP 是无状态连贯,每一次申请的数据都是互相独立且不会被保留的。为解决诸如购物车的问题。引入了 cookie 和 session 对象。
application 对象
<%=” 虚构门路:” + application.getContextPath() +””%>
<%=” 绝对路径:” +application.getRealPath(“/MyJspProject”)+”” %>
打印后果:
虚构门路:/MyJspProject
绝对路径:
E:\studydemo\JavaWeb_yq.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MyJspProject\MyJspProject
config 对象
配置独享,服务器配置信息
page
以后 JSP 页面对象,相当于 Java 中的 this
exception 异样对象
四种范畴对象
范畴由小到大
以上四种对象共有的办法:
留神
以上 4 个范畴 对象,通过 setAttribute() 赋值,通过 getAttribute() 获取值
尽量应用范畴小的对象,因为对象范畴越大,造成的性能损耗越大。
申请转发与申请重定向
两种申请形式
申请次要有两种形式,一种是 get 另一种是 post。get 形式情景有:表单指定 method=“get”、超链接模式(< a href > </ a >)、以及通过地址栏结构蕴含申请参数的链接的形式都属于 get 形式申请。
区别
get 形式的在地址栏显示申请信息,但地址栏显可能包容的内容优先,只有 4 -5KB。Post 申请不会显示在地址栏,其将申请信息搁置在申请体中。
文件上传操作必须应用 post 申请。
注册小我的项目
register.jsp
<%@ page language=”java” contentType=”text/html; charset=UTF-8″
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Insert title here</title>
</head>
<body>
<form action=”show.jsp” method=”post”>
用户名:<input type=”text” name=”uname” /><br/>
明码:<input type=”password” name=”upwd”/><br/>
年龄:<input type=”text” name=”uage”/><br/>
喜好 <br/>
<input type=”checkbox” name=”uhobbies” value=” 足球 ”/> 足球、
<input type=”checkbox” name=”uhobbies” value=” 篮球 ”/> 篮球、
<input type=”checkbox” name=”uhobbies” value=” 乒乓球 ”/> 乒乓球 <br/>
<input type=”submit” value=” 注册 ”>
</form>
</body>
</html>
show.jsp
<%@ page language=”java” contentType=”text/html; charset=UTF-8″
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Insert title here</title>
</head>
<body>
<%
// 设置 post 申请编码
request.setCharacterEncoding(“utf-8”) ;
String name = request.getParameter(“uname”) ;
//name = new String(name.getBytes(“gbk”) , “utf-8”); get 形式批改编码
int age = Integer.parseInt(request.getParameter(“uage”) ) ;
String pwd = request.getParameter(“upwd”) ;
String[] hobbies = request.getParameterValues(“uhobbies”) ;
%>
注册胜利,信息如下:<br/>
姓名:<%=name %><br/>
年龄:<%=age %><br/>
明码:<%=pwd %><br/>
喜好:<br/>
<%
if(hobbies !=null){
for(String hobby :hobbies)
{
out.print(hobby +” “);
}
}
%>
</body>
</html>
注册后果:
若不应用 request.setCharacterEncoding(“utf-8”),则在输出中文时会呈现乱码。
乱码问题的解决
首先对立申请的编码。
如果是 get 申请,则能够通过以下形式:
1、批改 server.xml。批改 tomcat 装置目录下的 server.xml,增加 URIEncoding=“UTF-8”,如下
此种办法一劳永逸。
2、还有一种比拟鸡肋的形式就是每个变量都通过 getBytes 取得对应字节流,而后再转为对应编码。
如果是 post 申请则间接应用:
好啦,明天的文章就到这里,心愿能帮忙到屏幕前迷茫的你们!