D:\Software\Tomcat7\work\Catalina\localhost 是缓存目录,可以删掉隐藏域:页面表单中的一个元素,跟文本框一样,但是用户看不到1.建立test1--form表单需要它,而不需要用户看到,用隐藏域<body><%=request.getParameter("haha")%><form action="" method="post"><input type="text" name="haha" /><!-- 隐藏域 --><input type="hidden" name="xixi" value="maoyun" /><input type="submit" /></form></body>
JSP一共有九大内置对象:out
request
response
session
application另外四个用的不多
指令:
<%@page %><%@include file='test1.jsp' %> include 指令(静态include)test2.jsp<body>222222222222222222222222222222<%int num = 100;%><%@include file="test3.jsp" %></body>test3.jsp body放入33333333333333删除第一行的其他,进入淘宝的,看导航
动作:
<jsp:forward><jsp:include> include 动作(动态include)建立test4
<body>444444444444444444444444444444<jsp:include page="test5.jsp">//<jsp:param value="maoyun" name="username"/></jsp:include></body>建立test5555555555555555555555555555//<%=request.getParameter("username")%>
面试最容易问相近的东西
首先,这个两个include从表现的结果形式上没有任何区别剖析jsp的原理将jsp变成一个servlet,遇到java代码,就去掉标签原封不动,如果遇到html代码,就用out.write给它打出来每一jsp背后都有一个servlet新建test6.jsp
<div>aaaa</div><%System.out.print("xxxx");%></body>到tomcat文件夹里去看看test6啥时候生成,重启tomcat--访问网址--打开文件夹有test6_jsp--打开它--_jspInit(){}(初始化)--_jspDestroy--_jspService(Servlet开始也有,分化成两个)--猜出类像HttpServlet--其里面有session,out 九大内置对象--try---继续往下走--out.write--写的html--java代码servlet是jsp的底层,jsp的声明???这段内容吃饭的,很重要java代码里不能定义方法,原因在方法里不能声明方法通过声明定义方法--类里可以定义方法test6.jsp<%!public void haha(){}%>test6_jsp在方法里找到代码 和其他方法平级静态includ动态includ区别 test3没有了查看test2_jsp.java合并一个 查看test4_jsp.java 把test5丢过去,其他自己查查静态的,直接合一起,动态运行的时候合一起动态includ可以传参数test4里加参数<body>444444444444444444444444444444<jsp:include page="test5.jsp">//<jsp:param value="maoyun" name="username"/></jsp:include></body>静态不用传参数, 动态测试下test5接收一下555555555555555555555555555//<%=request.getParameter("username")%>静态里共享参数,test2 <%int num = 100;%>test3里打印 3333333333333333333333333333
<%=num%> 此时不管报错直接用 --->查看test2_jsp.java公司开始穷的时候买空间 jsp不需要重启tomcat 下课练习out.print和out.write区别?新建test7 注释test3的num<body><% out.print("haha");out.write("haha");%></body>out.print 所打印的内容转化为字符串打印到页面上out.write 将原有的内容打印出来<body><% out.print(100);out.write(100);//打印整数的asc码%></body>
<body><% Object o = nullout.print(o);out.write(100);//打印整数的asc码%></body>servlet自启动建立一个包:com.qingmai.web--建立一个类WebStart删掉maping<servlet><servlet-name>WebStart</servlet-name><servlet-class>com.mao.WebStart</servlet-class><init-param>//4加参数,下面代码->怎么调用呢->init()里,跟配置有关系String username = this.getServletConfig().getInitParam("username")->打印出来->好处?数据库的连接信息,客户不能能改四大金刚,sqlService数据库名字,会自启动就可以了,后面框架会解决<param-name>username</param-name><param-value>damao</param-value></init-param><load-on-startup>1</load-on-startup>//1放在最后</servlet> 2初始化的时候加上输出public void init() throws ServletException {// Put your code hereSystem.out.println("网站启动了");//String username = this.getServletConfig().getInitParameter("username");//System.out.println(username);
}3然后部署一下就可以了过滤器(Filter):如果在web项目中,建立了一个过滤器,那么每次访问web中的servlet的之前时候,就会自动调用该过滤器中的代码每次设置编码--修改编码建立过滤器->建立类CodeFilter 想成为过滤器怎么办?实现一个接口Filter--> 代码写在doFilter 输出过滤器“过滤器被执行了”-->配置过滤器文件xml-<filter><filter-name>codeFilter</filter-name><filter-class>com.mao.CodeFilter</filter-class></filter>-<filter-mapping><filter-name>codeFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>启动tomcat不启动过滤器-->访问test7-->啥都没有,标签也没有了
--->当过滤器过滤信息之后,会停止后面要运行的内容-->网页要出来哈->doFilter(父类对象 参数FilterChain->)FilterChain : 过滤器链系统不知道后面还有没有过滤器->在doFileter里使用//调用过滤器链:如果后面有过滤器,就会执行后面的过滤,//如果没有,就会继续执行网站后面的内容arg2.doFilter(arg0, arg1);//净水层,没有了要排除来水--->系统如何知道过滤器的顺序?顺序在哪里?根据xml里先后顺序编码调一下,在doFileter里加上 arg0.setCharacterEncoding("UTF-8");--->测试test1 访问网页时候会执行过滤器 还可以写响应编码,jsp响应编码在coding里,先过滤器,后网页 访问一次网页,执行一次过滤器-->
url重写--> Servlet显示单个用户如何写
showSingleUser.do?id=5 wumao-->建立一个servlet showSingleUser /*留个doget 输出“触发了”public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//测试ip request.getLocalAddr();后加//String str1 = request.getPathInfo();//System.out.println(str1.substring(1)); System.out.println("触发了");}此时访问所有的网页都会触发访问加上/user/* 带有user会访问-->上面注释的内容 截取字符串做门户网站,都会写url形式 带有尾巴的不好看作业类似亿流网络
user/sanmao