Java Web 胡言乱语 之一
Tomcat安装及配置篇
1,tomcat安装前,防火墙必须关闭。避免意外问题发生。
?
2,tomcat 目录介绍:
?1》 bin? --?? 所有的可执行命令,启动和关闭服务器的命令就在此文件夹之中
?2》 conf -- 服务器的配置文件夹,里面保存了各个配置信息
?3》 lib ---?? Tomcat服务器所需要的各个库文件
?4》 logs-- 保存服务器的系统日志
?5》webapps? -- web应用程序存放的目录,web项目保存到此目录中即可
?6》work --??? 临时文件夹,生成所有的临时文件(*.java, *.class)
?
JSP注释
1,显示注释语法
? <!-- 注释内容 -->
2,隐式注释语法
? //注释,??????? ?? 单行注释
?/*? 注释*/?????? ? 多行注释
<%-- 注释 --%>??? JSP注释
?
前两种隐式注释风格是从 java中演变而来。
?
?
-----------------------------
?
Scriptlet
1,在Jsp中最重要的部分就是Scriptlet(脚本小程序)
?1》 <%%>:在此Scriptlet中可以定义局部变量,编写语句
?2》<%!%>:在此Scriptlet中,可以定义全局变量,方法,类
?3》<%=%>:用于输出一个变量或一个具体内容
?
<% int x =10; //定义局部变量 String info="www.baidu.com"; out.println("<h2>x = " + x+ "</h2>"); //语句 out.println("<h2>x = " + info+ "</h2>");%>?
<%! public static final String INFO= "www.baidu.com";%><%! public int add(int x ,int y){ return x +y; }%><% class Person{ private String name;private int age;public Person(String name,int age){ this.name = name; this.age = age;}public String toString(){ return "name = "+this.name + ",age = "+ this.age;} }%><% out.println("<h3>INFO = " + INFO +"</h3>"); out.println("<h3>3 + 5 = " + add(3,5) +"</h3>"); out.println("<h3>" + new Person("zhangsan",30) +"</h3>");%>?
<html><head><title>www.baidu.com哎呦范德萨发生</title></head><body> <% int rows =10;int cols =10; %> <table border="1" width="100%"> <%for(int x =0;x<rows;x++){ %> <tr> <% for(int y =0;y<cols;y++){ %> <td><%=x*y%></td> <% } %></tr> <%} %> </table> <%"); %></body></html>
?识记:标签指令必须完结。
????????? JSP开发中尽量使用表达式输出的语法来取代out.println().
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Page指令使用
?
1,设置MIME类型
<%@ page language="java" contentType="application/msword;charset=GBK"%><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><% response.setHeader("Content-Disposition","attachement;filename=hello_01.docx");%><table> <tr><td>生发生的发生大幅四大发发生的发生大幅四大发</td></tr> <tr><td>团我让他核桃仁和让他和让他忽然</td></tr> <tr><td>特瓦尔维尔热热热沃尔沃让我额</td></tr></table></body></html>
?JSP中,如果 pageEncoding存在,那么JSP的编码将有pageEncoding决定,如果不存在才有charset决定,如果都不存在了,那么使用IOS-8859-1编码.
2,错误页的设置
?满足以下两个条件:
?1 指定错误出现时的跳转页,通过errorPage属性指定。
?2 错误处理页必须有明确的标识,通过isErrorPage属性指定.
?
概念:地址栏不改变的跳转,称为服务器端跳转
<error-page> <error-code>500</error-code> <location>/basic_page/error.jsp</location> </error-page> <error-page> <error-code>java.lang.NullPointerException</error-code> <location>/basic_page/error.jsp</location> </error-page>
?3,导入包的操作
?import能够出现多次,连接数据库:
<%@ page language="java" contentType="text/html" pageEncoding="GBK"%><%@ page import = "java.sql.*;"%><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><%! public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; public static final String DBRUL = "jdbc:mysql://localhost:3306/luckDb"; public static final String DBUSER = "root"; public static final String DBPASS = "123456";%><% Connection conn = null ; PreparedStatement pstmt = null; ResultSet rs = null ; %><%try {Class.forName(DBDRIVER);conn = DriverManager.getConnection(DBRUL,DBUSER,DBPASS); String sql = "SELECT empno,ename,job,sal,hiredate FROM emp";pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery();%><center> <table border = "1" width="80%"> <tr> <td>雇员编号</td> <td>雇员姓名</td> <td>雇员工作</td> <td>雇员工资</td> <td>雇员日期</td> </tr><% while(rs.next()){int empno =rs.getInt(1);String ename=rs.getString(2);String job = rs.getString(3);float sal = rs.getFloat(4);java.util.Date date = rs.getDate(5);%><tr> <td><%=empno%></td> <td><%=ename%></td> <td><%=job%></td> <td><%=sal%></td> <td><%=date%></td> </tr><%}%> </table></center><%}catch(Exception e){ System.out.println(e);}finally{ rs.close(); pstmt.close(); conn.close();}%></body></html>
? **********************************************************************************
3,包含指令
?分为两种包含指令:
方法一:再每一个JPS页面(HTML)都包含工具栏,头部信息,尾部信息,具体内容.
方法二:将工具栏,头部信息,尾部信息都分成各个独立的文件,以后用的时候直接导入进来.
静态包含:<%@ include file="要包含的文件路径"%>
动态包含:<jsp:include>指令可以完成动态包含的操作,与静态包含不同的是,动态包含语句,可以自动区分被包含的
?
????????????????? 页面是静态还是动态。
?
??? 1>不传递参数:<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|false">
??? 2>传递参数:??? <jsp:include? page="{要包含的文件路径|<%=表达式%>}" flush="true|false">
????????????????????????????? <jsp:param name="参数名称" value="参数内容"/>
??????????????????????????????????????? ....可以向北包含页面中传递多个参数
????????????????????????? <jsp:include>
?
区别:静态包含属于先包含后处理,那么如果现在使用的是动态包含呢?
????????? 动态包含是 先处理后包含,包含的是处理后的结果
?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
语法:<jsp:forward>指令,将一个用户的请求从一个页面传递到另外一个页面。
?
<%@ page language="java" contentType="text/html" pageEncoding="GBK"%><%@ page import = "java.sql.*;"%><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body> <% String username = "douglaso"; %> <jsp:forward page="forward_demo02.jsp"> <jsp:param name="name" value="<%=username%>"/> <jsp:param name="info" value="www.baidu.com"/> </jsp:forward>?</body></html>