1.tomact配置
Connector port="8081" 其中8081为机器上的端口,可以自己根据自己自己机器上未被占用的端口改变。
注意:*.xml文件改变,服务器需要重启生效
配置的虚拟目录里必须有以下的目录结构:
Web ROOT 一般情况下虚拟目录要配置到此文件夹之中
|-WEB-INF
|-web.xml 配置文件,有格式要求
修改Server.xml文件
<Context path=”/demo” docBase=”D:\webdemo”/>
下面是一个简单的jsp入门的例子:
input.htm
<HTML>
<HEAD>
<TITLE> input </TITLE>
<script language="javaScript">
function validate(){
var info = document.forms[0].info.value;
if(info.length<=0){
alert("输入信息不能为空!");
document.forms[0].info.focus();
return false;
}
return true;
}
</script>
</HEAD>
<BODY>
<form method="post" action="input.jsp">
输入信息:<input type="text" name="info"><br>
<input type="submit" value="显示">
</form>
</BODY>
</HTML>
input.jsp
<HTML>
<HEAD>
<TITLE> input </TITLE>
</HEAD>
<BODY>
<%
String str = request.getParameter("info");
out.println("<h1>"+str+"</h1>");
%>
</BODY>
</HTML>
jsp基础知识
jsp注释:
显式注释:直接使用html风格的注释:<!-- -->
隐式注释:直接使用JAVA的注释://、/*..*/
JSP自己的注释:<%-- --%>
JSP的脚本元素
在整个jsp中Script有三种形式
<%%> scriptlet
范例:编写数字累加的操作,从1—100累加
<%
int sum=0;//声明变量
for(int i=0;i<=100;i++){
sum+=i;
}
out.println("<h1>1--100 SUM:"+sum+"</h1>");
%>
<%! %> 声明
可以直接在<%!%>的scriptlet之中,定义全局常量,编写方法,编写类,但是绝对不能直接在里面编写任何的语句。
<%!
public static final String Driver = "oracle.jdbc.driverOracleDriver";
public static final String Url = "jdbc:oracle:thin:@laocalhost:1521:ocal";
%>
<%
out.println("Driver:"+Driver);
out.println("Url:"+Url);
%>
<%= %> 表达式
别名:表达式
输出一个变量或一个具体的值
实例:
<%=add(20,50) %>
动态打印表格
printTable.html
<HTML>
<HEAD>
<TITLE> input </TITLE>
</HEAD>
<BODY>
<form method="post" action="printTable.jsp" >
行:<input type="text" name="rows"><br>
列:<input type="text" name="cols"><br>
<input type="submit" value="打印">
</form>
</BODY>
</HTML>
printTable.jsp
<HTML>
<HEAD>
<TITLE> input </TITLE>
</HEAD>
<BODY>
<%
//使用JAVA的注释
int rows = Integer.parseInt(request.getParameter("rows"));
int cols = Integer.parseInt(request.getParameter("cols"));
%>
<table border="1">
<%
for(int i=0;i<rows;i++){
%>
<tr>
<%
for(int j=0;j<cols;j++){
%>
<td><%=i*j%></td>
<% }%>
</tr>
<%}%>
<table>
</BODY>
</HTML>
Page指令
Page表示当前一个jsp页面,可以理解为一个对象的本身,即:把一个jsp当作一个对象来看待
主要功能:
设置MIME类型
导包指令
其他指令:错误页、禁止session、页面的缓冲等
设置MIME
中文乱码简单处理
MIME设置不当所出现的问题
Word及其他文件的MIME类型
范例:希望一个jsp页面中显示成一个word文档
<%@ page contentType="application/msword;charset=gb2312"%>
注意:contentType只能设置一次
导包指令
Import指令是page指令中唯一允许设置多次的指令
从数据库中查询数据显示到页面(oracle,SQLServer2000)
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*,java.io.*"%>
连接数据库SQLServer
<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ page import="java.sql.*"%>
<HTML>
<HEAD>
<TITLE> input </TITLE>
</HEAD>
<BODY>
<!-- html风格的注释-->
<%!
public static final String Driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
public static final String Url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=XXK";
public static final String User = "tj";
public static final String Psw = "tj";
%>
<%
Connection conn = null;//数据库连接
PreparedStatement pstmt = null;//数据库操作
ResultSet rs =null;//查询结果集
%>
<%
Class.forName(Driver);//
conn = DriverManager.getConnection(Url,User,Psw);
String sql = "Select studentno,name,birthday From student";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
%>
<center>
<h1>学生信息</h1>
<table border="1" >
<tr>
<td>学生编号</td>
<td>学生名称</td>
<td>生日</td>
</tr>
<%
while(rs.next()){
String studentno=rs.getString(1);
String name = rs.getString(2);
String birthday = rs.getString(3);
%>
<tr>
<td><%=studentno%></td>
<td><%=name%></td>
<td><%=birthday%></td>
<tr>
<%
}
%>
<%
rs.close();
pstmt.close();
conn.close();
%>
</table>
</center>
</BODY>
</HTML>
JSP包含机制:include指令
@include指令
此包含属于静态包含,可以包含任意的文件
jsp:include指令
此语句为动态包含,如果被包含的页面是jsp,则先处理之后再将结果包含,而如果包含的是非*.jsp文件,则只是把文件内容静态的包含进来,功能与@include类似
动态包含会比使用静态包含更方便,而且可以向被包含的页面中传递参数
包含语句属于标签指令形式
forward
跳转指令,当一执行此指令的时候,程序会无条件立刻跳转。此语句也属于标签指令形式。
语法一:
<jsp:forward page="页面"/>
语法二:
<jsp:forward page="页面">
<jsp:param name="参数名称" value="值"/>
</jsp:forward>
404 表示页面没有被发现错误,500表示服务器程序错误