自己构建Web应用
1.创建一个webDemo的文件夹
2.在webDemo文件夹下创建WEB-INF文件夹
3.在其他web应用中找到web.xml文件(只保留最原始的部分),将web.xml文件放到WEB-INF文件夹下
4.在WEB-INF下创建lib和classes文件夹
这已经是一个空的web应用,将webDemo放到Tomcat服务器的webapps路径下.
在webDemo文件夹下可以写一些jsp文件.
webDemo的格式如下
webDemo
!WEB-INF(客户端浏览器无法访问这个路径下的任何内容,可以将登录验证后的页面放到这个目录下)
! !web.xml(主要是配置sevlet的一个文件)
! !lib文件夹(放jar文件,例如mysql数据库驱动的文件(xx.jar))
! !classes文件夹(放置一些JavaBean文件(xx.class))
!xx.jsp
如果写的一些页面让浏览器访问不到,可以将其放置在WEB-INF目录下.
JSP的四种基本语法
1.注释
<!--HTML的注释-->
<%JSP的注释%>
区别:html的注释可以在源代码中显示,而jsp的注释在源代码中看不到.jsp的注释部分不会发送到客户端.
2.jsp声明
<%!声明部分%>
声明变量和方法
jsp页面会编译成一个Servlet类,每个Servlet在容器中只有一个实例:在JSP中声明的变量是成员变量,成员变量在创建实例时初始化,该变量的值一直保存,直到实例销毁.(可以设置一个成员变量(count),用作某个页面的浏览量(每当访问一次count++)).
这里有一个很重要的知识点:<!% int a1 %>和<%int a2%>的区别
a1是全局变量,可以被多线程共享,a1的值受所有线程的影响.
a2是局部变量,作用于当前程序片及之后的程序片.其他线程不能影响a2的变化.
如果在<!%
int count=0;
public void addCount(){
count++;
}
%>
在上述定义中addCount()方法中对count进行操作,如果想当前线程使用addCount时,其他线程不能在使用addCount方法,需要加锁(synchronized void addCount()),这样当一个线程使用addCount方法时,其他线程想使用就需要排队等待.
3.输出JSP表达式
<%out.println();%>
<%=表达式%>
4.JSP脚本
可以定义变量(变量是局部变量)
脚本中不能定义方法.
注:jsp连接数据库的代码(lib中要有mysql的驱动程序)
//注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//获取数据库连接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名","用户名","密码");
//创建Statement
Statement stmt=conn.createStatement();
//执行查询
ResultSet rs=stmt.executeQuery("sql语句");
%>