JSP技术

本文深入讲解JSP技术,包括JSP的基本概念、执行原理、脚本元素、指令、内置对象及标签的使用。同时,文章详细阐述了JavaBean的规范与作用,以及内省技术在数据封装中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP技术简介

  1. jsp ---   Java Server Pages (java 服务器端的网页)
  2. JSP可以编写      HTML代码+Java代码+JSP的代码
  3. JSP的执行原理:jsp第一次访问的时候,把JSP的文件翻译成.java的文件,编译成.class的文件,执行
  4. 编写JSP的脚本元素    <%!   %>     <%=    %>        <%   %>
  5. JSP和servlet在程序中开发的角色

               1.JSP    model1的时代           

                2.JSP(收集用户输入的数据,显示数据给用户)+  servlet(接收和相应请求)

JSP的指令         

  • page指令

  1. 通过page指令设置JSP文件的属性
  2. page语法:<%@  page  属性名称=属性值  属性名称=属性值  %>
  3. page指令的属性           
  • 1. language   ----默认翻译成什么语言   
  • 2.extends    --继承(一个jsp的文件翻译成.java文件,默认继承一个类)           
  • 3.session   --默认时true,可以直接使用session     
  • 4.import       ---导入包。可以出现多次,其他属性只能出现一次                   
  • 5.buffer      --设置输出缓冲区的大小,默认是8kb             
  • 6.autoflush         ---如果缓存区满了,是否自动刷新,如果满了不刷新,就会抛出异常               
  •  7.errorPage   --程序抛出异常,直接把异常抛到页面上。可以指定错误的处理页面  errorPage="/error/error.jsp" 
  •  8.isErrorPage          --需要在错误的页面使用,决定直接可以使用exception       
  • 9.isELIgnored     --是否忽略EL表达式,默认是false                
  • 10.pageEncoding      --设置当前页面的编码,JSP的文件翻译成.java文件               
  • 11.ContentType     --浏览器默认打开文件的编码       
  • 当页面只设置了10和11中的一个,另一个默认和这个相同
  • 在web.xml配置全局的错误页面 <error-page>              <error-code>404</error-code>       <location>/error/404.jsp</location>                               </error-page>
  • include指令          

  1. include指令:可以用于页面包含,把几个页面放在一起对外显示
  2. 指令的语法:<%@   include   file=""    %>
  3. 静态包含:原理:将包含文件的所有内容复制过来,一起翻译成一个.java文件然后编译成.class文件

JSP的内置对象

1.概念:可以直接使用。exception对象,page指令有一个属性,isErrorPage设置true才能使用exception对象

2.内置对象

request                   HttpServletRequset

response                HttpServletResponse

session                   HttpSession

application              ServletContext

out                           JspWriter

pageContext            PageContext

page                         Object(代表当前对象)

config                        ServletConfig

exception                   Throwable

3.out对象,真实的对象是JspWriter,可以向页面输出内容,PrintWriter response.getWriter();这两个对象之间的联系?

<%= "HELLO" %>           <% out.print("AAAA");  %>            <%  response.getWriter().print("BBBB");  %>

<%  out.print("CCCC");  %>                  输出结果是:BBBB   HELLO   AAAA CCCC 因为会把out缓存区的东西先放到respnse缓冲区,然后一起输出到客户端

4.pageContext对象

  • 这一个对象顶9个,因为可以获取另外8个对象
  • 域对象:代表当前页面的域
  • 向其他域对象存取值
  • pageContext对象的API                 
  1. setAttribute(String name , Object value)         向pageContext域对象存入值
  2. setAttribute(String  name,Object value, int scope)  向指定域存入值
  3. Object getAttribute(String name)        从pageContext域对象取值
  4. Object getAttribute(String name,int scope)     从指定域对象取值
  5. Object findAttribute (String name )        全域查找 (默认从最小域开始找)
  • 作用:编写框架的时候           自定义标签的时候             编写通用性较高的代码

JSP标签

  • <jsp:forward>    转发的功能    page属性:转发到哪个页面       路径:服务器绝对路径(不包含项目名称)
  • <jsp:param>    转发的时候可以传递参数           写到<jsp:forward>标签中间
  • <jsp:include>     动态包含(和静态包含结果是一样的,原理是不同的)

         在源码的文件下,生成了4个.java 和 .class 文件

         原理:将各个部分分别翻译编译,然后将结果合并到一起

JavaBean

规范: 1.这个java类必须有无参构造方法       2.属性私有化        3.提供public  get  set方法(有一个就行)

作用:封装数据

JavaBean的属性:是由get或者set方法来决定     有get或set方法,没有变量   也是JavaBean的属性

内省的技术:

  • 通过内省的技术,可以操作JavaBean的属性的读写方法
  • 原理:
//从页面获取数据存储到map      没有处理数据类型,只能接收String类型
Map<String,String[]> map = request.getParameterMap();
//创建JavaBean对象
User user = new User();
//封装数据(内省原理)
try{
populate(user,map);
}catch(Exception e){
    e.printStackTrace();
}


populate(User user, Map<String , String[]>  map) throws Exception{
    //数据封装
    BeanInfo info = Introspector.getBeanInfo(user.getClass());
    //获取属性的信息
    PropertyDescriptor[] pds = info.getPropertyDescriptors();
    //循环遍历
    for(PropertyDescriptor pd : pds){
        //表单中的name属性的值和javabean中属性如果要是相同,就封装
        //获取熟悉的名称
        String proName = pd.getName();
        //map中的key是否和属性的名称相同,如果相同,封装数据
        if(map.containsKey(proName)){
            //获取属性的写方法
            Method m = pd.getWriteMethod();
            //执行写方法
            m.invoke(user,map.get(proName)[0]);
        }



    }

}

内省技术的工具类:

BeanUtils工具类,需要两个jar包 (页面name要和bean中的变量名相同)

  • commons-beanutils-1.8.3.jar
  • commons-logging-1.1.1.jar
  • 如果有日期类型,需要编写字符串转日期代码:1.需要编写类,实现Converter接口,重写一个方法(字符串转日期)    2.使用ConvertUtils.register()注册
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			//获取数据
			Map<String,String[]> map = request.getParameterMap();
			//将数据封装到这个bean中
			User user = new User();
			//注册:遇到Date类型,按照我写的传入对象的方式来解决
			ConvertUtils.register(new MyConverter(), Date.class);
			//使用beanutil进行封装
			try {
				BeanUtils.populate(user, map);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(user.getUsername());
			System.out.println(user.getPassword());
	}

//转换格式的类
public class MyConverter implements Converter{

	/**
	 * obj:用户输入的数据
	 */
	public Object convert(Class clazz, Object obj) {
		//把obj转换字符串
		String str = (String) obj;
		//把字符串转日期格式
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date;
		try {
			date = format.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
			throw new RuntimeException("日期转换错误");
		}
		return date;
	}

}

 

内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值