JSP页面元素
<% %>
<%=%>输出
<%!%>定义一个方法;或设置一个全局变量
web中文解决方法的问题
1,把表单提交方式改为“post”,在接收请求是将
2,如果表单提交请求方法是get时,在请求参数时需要手工转码 。
3,把服务器的默认编码改了,《不建议用》改为默认编码后其他的程序有可能全是乱码。
手工加 ,class.forName("com.mysql")
jsp有5个隐藏对象是可以掉用的;
request请求的封装点提交后;
out页面;
session会话;
application最大的;
response;对象
out.porint();输出
ln();输出并换行
request.getParameter("UName");
为取表单中NAME为UName的值
request.setCharacterEncoding(Stringcharset)//在表单的请求方法为post的时候才有用
能有效的解决编码问题 requsest.getParameter之前用;
<%@ page language="java" import="java.util.*,hnkjxy.bbs.dao.*,hnkjxy.bbs.entity.*" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("UName");
String pwd = request.getParameter("uPass");
String msg="";
if(!msg.equals("")){
//获取用户信息访问接口对象
UserDao udao = DaoFactory.getUserDao();
//根据用户名查询用户信息
User user = udao.findUser(name);
}else{
}
%>
SESSION会话 可以用于传值 ,默认保存30分钟,若30分钟过后SESSION就没有值来,中途 你也可以修改 setAttribute("key","valuse")
getAttribute("key")
removeAttribute("key") 移除
invalidate(); 结束会话
配置会话时间 在XML文件中
<!-- 设置会话的时间 -->
<session-config>
<session-timeout> 30</session-timeout>
</session-config>
response 对象用来响应客户端
application 对象可以实现网页操作
application 对象的基础类是 javax.servlet.ServletContext类来声明对象,
再掉用getServletContext();获取application对象如
application = ServletContext.getServletContext
统计页面
Interger counter =(Interger)session.getAttribute("conter");
if(counter==null){
Integer.valueof(1);
session.setAttribute("counter",counter);
}else{
counter++;
session.setAttribute("counter",counter);
}
z
指令元素 在翻译的时候执行
include指令实现重复代码的掉用 ;相当于复制;
<%@ include file="header.jsp" %>
taglib 可以自己创建标签
<%@ taglib uil ="" prefix=""%>
能增加代码的重用度,使页面维护方便
动作元素 在访问的时候执行
动作元素都是JSP开头的
<jsp : forward >
<jsp:useBean id="123" scope="session" class="包名加类名"></jsp:java:useBean>
在session中添加一个方法为123并实例化对象“类名” ,123就是这个类实例化的名称
<jsp:setProperty property="userName" value='<% request.getParameter("userName")%>' name="123"/>
123这个类里面的属性赋值 ,这个类必须有set方法, 不然setProperty会找不到
<jsp:getProperty property="userName" name="123"/>
取值方法 property 和name 是必要属性
value 可以改成 param
当属性名和表单中的name属性相同是可以不写 prarm
类里面的属性请不要在第一第二个字母大写 ,大写的话容器的反射机制会找不到该属性的GET和SET方法
EL的使用 ;不能写在<% %>代码里面
${user["name"]} 相当于 ${user.name}但不用在意属性第一二个字母大小
${user.name}相当于掉用 user类里面的getName的方法,属性一二个字母必须小写
使用的前提是需要写<jsp:useBean id="user" scope="session" class="包名"/>
若是JAVA代码中的变量 已经实例化了的 你可以把改对象加到reques.setAttribute("top",top)
el表达式可以进行运算 ${13+5} ; 若${user.number*100}那么这个number属性必须为int
${empty user}
判断user类是否为空 为空返回true 不为空返回false
${A?B:C}
当表达式A为true时运行 B表达式 当A表达式为FALSE时运行C表达式
自定义标签
自定义标签的类型有3种
空标签 <name/> 或<name> </name>
带属性标签<name value="" ></name>
带标签的标签 <name> <name1></name1></name>
自定义标签的代码必须写在Web-inf 下的 .mxl文件中
<?xml version="1.0" encoding="UTF-8"?>
//encoding用来声明编码 version 用来声明版本
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> </web-app>
//该xml文档所使用XSD,XSD用于定义一个XML文档可用的合法元素,这里XSD是2.5版本
<tag>
<name>tag自定义名称</name>
<tag-class>标签方法所在的类</tag-class>
<body-content>empty</body-content> //可以填JSP 可家JAVA代码
<descriptiom>注释是这个标签是干嘛用的</description>
<attribute>
<name>count</name>
<required>次属性是用必要的还是不必要的 用false 或true</required>
<RTEXPRVALUE>TRUE 或者fales</rtexprvalue>//属性是否可以添加表达式
<type>java.util.list</type>//申明属性类型的 若没有这个标签那么默认为String类型
</attribute>
<variable>申明变量
name变量名
scope变量的有效范围
varible-class 申明变量的类型
</variable>
</tag>
xml文件中的属性名要与CLASS中的属性名一样
标签中需要 class类 文件 此类需要继承类 或实现接口
如:javax.servlet.jsp.tagext.SimpleTagSupport
也就是 extends SimpleTagSupport
以Suppert结尾的都是半成品类 当然你也可以实现接口 实现接口中的方法
<%@ taglib uri="Web-INF/caiwei.tld" prefix="demo自定义名称" %>在JSP中创建标签
<demo自定义名称:tag自定义名称 count="给参数赋的值">