学习过程初次设想
其实一直以来都有设想过自己写一个简单的小网站,但是一直没有付诸实施,现在尝试一边学习一边实现。
目前具有简单的java基础(并不了解基础的框架,也是打算一边学习一边实现)、html基础、mysql基础。
阶段目标
简单的实现“找笑脸游戏”。
目前系统环境如下:
1.java13
2.tomcat7.0
3.mysql(目前还没有安装)
主要学习参考资料
1.轻量级JavaEE企业应用实战第三版 作者:李刚
过程
1.JSP申明语法
<%! 申明部分%>
例子:实现界面如下,主要是实现访问者访问页面次数的自动叠加。
temp.jsp具体实现代码如下:
<%@ page contentType="text/html;charset=GBK" language="java" errorPage="" %>
<html>
<head>
<meta name=keywords content=小游戏,little game,心理游戏,心理提升>
<meta name=description
content=这是心理学爱好者自编的网页,目前还在编写阶段,欢迎试用>
<title>心理提升</title>
<link rel="icon" href="first.png" >
<style content="text/css">
div[id]{
width:500px;
background-color:#ggg;
padding:10px;
draggable="true";
}
th{
font-weight:blod;
background:#ccc;
height:40px;
width:150px
}
td{
height:40px;
width:150px;
background:#fff888;
}
</style>
</head>
<!--申明部分-->
<%!
public int count;
%>
<body>
<%!
public int count;
%>
<div align="center">
<div id="xx" draggable="true">
<br >hi~欢迎您的到来,这里是找笑脸游戏</br>
<hr/>
<!--人脸表格,未完待续-->
<table align="canter">
<!--java小脚本-->
<%for(int i=0;i<5;i++){%>
<tr>
<%for(int j=0;j<5;j++){%>
<td>row <%=i%>, cell <%=j%></td>
<%};%>
</tr>
<%};%>
</table>
<hr/>
<div align="right">
<table align="left">
<tr>网站访问量:<%=count++%></tr>
</table>
</div>
</div>
</div>
</body>
</html>
笔记:
①JSP页面的声明部分会转换成对应Servlet的成员变量或成员方法;
②不能使用abstract修饰申明部分的方法,因为抽象方法将导致JSP对Servlet变成抽象类,从而导致无法实例化;
2.JSP表达方法
<%=表达式%>
<tr>网站访问量:<%=count++%></tr>
在上面的代码中也有使用。
3.JSP脚本
tomcat中jsp所对应的servlet类,jsp小脚本部分将会转换成_jspService方法里的可执行性代码,jsp页面里的所有的静态内容中静态的内容都由_jspService方法里输出语句来输出。这也是JSP脚本可以控制JSP页面中静态内容的原因。
4JSP的3个编译指令
①page
位于页面顶端,一个jsp可以有多个page指令。
- language
- extends
- import
- session
- buffer
- autoFlush
- info
- errorPage
- isErrorPage
- contentType
小知识点:MIME的常见形式是一个主类型加一个子类型,用斜线分隔。比如text/html、application/javascript、image/png等。在访问网页时,MIME type帮助浏览器识别一个HTTP请求返回的是什么内容的数据,应该如何打开、如何显示。
-pageEncoding
例子实现之一(设置jsp信息info):
在temp.jsp中添加代码。
<%@ page contentType="text/html;charset=GBK" language="java" errorPage="" %>
<%@ page info="这是一个笑脸小游戏,灵感来源于国外视频,视频里说抑郁的人可能更容易关注焦虑、生气等消极表情,此游戏的主要目的是增加人们对笑脸的捕获能力,据说维持7周的适当计划和练习具有缓解抑郁的作用。" %>
<html>
<div align="center">
<hr id="xx1"/>
<aside>
<h3>游戏灵感来源</h3>
<p id="p_1" dir="ltr"><%=getServletInfo()%></p>
</aside>
<div></div>
</div>
</body>
运行结果如下:
例子实现之二(设置错误页面errorPage):
在temp.jsp中修改代码。
<%@ page contentType="text/html;charset=GBK" language="java" errorPage="error.jsp" %>
编写errorPage页面显示。
<%@ page contentType="text/html;charset=GBK" language="java" isErrorPage="true" %>
<%@ page info="这是一个笑脸小游戏,灵感来源于国外视频,视频里说抑郁的人可能更容易关注焦虑、生气等消极表情,此游戏的主要目的是增加人们对笑脸的捕获能力,据说维持7周的适当计划和练习具有缓解抑郁的作用。" %>
<html>
<head>
<meta name=keywords content=小游戏,little game,心理游戏,心理提升>
<meta name=description
content=这是心理学爱好者自编的网页,目前还在编写阶段,欢迎试用>
<title>网页访问出错</title>
<link rel="icon" href="error.jpg" >
</head>
</head>
<body>
<p>游客你好~</p>
<p>这是一个错误页面,请重新登录,因为网站还处于维护之中,造成的使用不便请见谅~</p>
</body>
</html>
页面显示如下:
②include
<%@include file=""%>
静态include指令,将包含的页面加入本页面,在body中使用。
③taglib
5.JSP的7个动作
①jsp:forward
②jsp:param
JSP1.1以上规范的使用方法如下:
<jsp:forward page="{relativeURL|<%=exception%>}">
<jsp:param.../>
</jsp:forward>
写了一个简单的登录页面login.jsp,不涉及数据库连接。
<%@ page contentType="text/html;charset=GBK" errorPage="" language="java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name=keywords content=小游戏,little game,心理游戏,心理提升>
<meta name=description
content=这是心理学爱好者自编的网页,目前还在编写阶段,欢迎试用>
<title>登录页面</title>
<link rel="icon" href="first.png" >
</head>
<body>
<div align="center">
<form id="login" method="post" action="temp.jsp">
用户名:
<input type="text" name="username">
<input type="submit" value="登录">
</form>
</div>
</body>
</html>
在temp.jsp中添加用户名接收语句。
<br >hi,<%=request.getParameter("username")%>~欢迎您的到来,这里是找笑脸游戏</br>
运行效果图如下。
③jsp:include
<jsp:include page="{relativeURL|<%=exception%>}" flush=“true”>
或者
<jsp:include page="{relativeURL|<%=excception%>}" flush=“true”>
<jsp:param name=“parameterName” value=“parameterValue”>
</jsp:include>
仅把页面的body内容的插入本页面中。
- 静态导入是将被导入页面的传输完全融合两个页面融合成一个servlet。而动态导入则在servlet中使用include的方法来引入被导入页面的内容。
- 静态导入时导入页面的编译指令会起作用,而动态导入时被导入页面的编译指令则失去作用,只插入被导入页面的body内容
- 动态包含还可以增加额外的参数。
④jsp:plugin
很少使用
⑤jsp:useBean
<jsp:useBean id=“javaBeanName” class=“javaBeanClassname” scope=“page|request|session|application”/>
<jsp:setProperty name=“BeanName” property=“proteryName” value=“value”/>
<jsp:getProperty name=“BeanName” property=“proteryName” />
在temp.jsp中加入如下代码:
<%@ page contentType="text/html;charset=GBK" language="java" errorPage="error.jsp" %>
<%@ page info="这是一个笑脸小游戏,灵感来源于国外视频,视频里说抑郁的人可能更容易关注焦虑、生气等消极表情,此游戏的主要目的是增加人们对笑脸的捕获能力,据说维持7周的适当计划和练习具有缓解抑郁的作用。" %>
<%@ page import="lee.User" %><!--主要是这个代码-->
<div align="center">
<div id="xx" draggable="true">
<!--useBean测试代码-->
<jsp:useBean id="use" class="lee.User" scope="session"/>
<%
request.setCharacterEncoding("GBK");<!--重要,可以防止出现乱码-->
use.setName(request.getParameter("username"));
%>
<br >hi,<%=use.getName()%>~欢迎您的到来,这里是找笑脸游戏</br>
类定义如下:
package lee;
public class User{
private String name;
private String password;
public User()
{
}
public User(String name,String password)
{
this.name=name;
this.password=password;
}
public void setName(String name)
{
this.name=name;
}
public void setPassword(String password)
{
this.password=password;
}
public String getName()
{
return this.name;
}
public String getPassword()
{
return this.password;
}
}
但是这样tomcat是没有办法运行的,还需要将java源码编译成二进制放到class文件下,可以通过ant进行编译。ant的配置文件build.xml放在\WEB-INF目录下,具体配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="antQs" basedir="." default="">
<property name="src" value="src"/>
<property name="classes" value="classes"/>
<property name="dest" value="dest"/>
<path id="classpath">
<pathelement path="${classes}"/>
</path>
<target name="compile">
<delete dir="${classes}"/>
<mkdir dir="${classes}"/>
<javac destdir="${classes}" debug="true" includeantruntime="yes"
deprecation="false" optimize="false" failonerror="true">
<src path="${src}"/>
<classpath refid="classpath"/>
</javac>
</target>
</project>
到build.xml下面输入如下命令:
ant compile
得到如下结果表示运行成功:
⑥ jsp:setProperty
⑦jsp:getProperty
今日复习
1.JSP申明语法
<%! 申明部分%>
2.JSP表达方法
<%=表达式%>
3.JSP脚本
<% %>
4.JSP的3个编译指令
①page
②include
③taglib
5.JSP的7个动作
①jsp:forward
②jsp:param
③jsp:include
④jsp:plugin
⑤jsp:useBean
⑥ jsp:setProperty
⑦jsp:getProperty