Tag Archives: java

Hello World

使用jsp输出js

    服务器端将多个js文件整合到一个请求内输出,是一种常用的减少页面请求数的方法;另外,如果js文件间的逻辑是相互依赖的,需要控制它们的加载顺序,在服务器端做文件整合也可以规避这种扯淡的事
    以前php的时候,使用简单的“include”,就可以完成这事,最近做了一个java的项目,也想使用这种方式,就想用jsp的include试试,已经想到了可能会有中文乱码的问题,于是加上了:pageEncoding=”UTF-8″

  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  <%@ page contentType="application/javascript" %>
  <%@ include file="xxx1.js" %>
  <%@ include file="xxx2.js" %>
  <%@ include file="xxx3.js" %>

    结果~~~还乱码 o(╯□╰)o
    查了很多资料,做了N多测试,大概有这么几种
  1. 将文件另存为“utf-8”格式,覆盖到项目里
    —-觉得这是多此一举,直接在eclipse里修改文件属性不就行了:检查文件属性,本来就是utf-8
  2. 在web.xml里做一些设置,让js文件可以做jsp解析
    —-无效
  3. script标签加上“charset”,等效的,jquery ajax加载脚本上,加上“scriptCharset”
    —-折腾了半天,还是无效
  4. 。。。。。
    搞来搞去,还是没有成功,jsp的乱码问题果然名不虚传 +_+

    刚才,本着死马当活马医的精神,拿第一种方法试了试,使用txt编辑器将js代码拷出来,另存为utf-8格式,在覆盖到项目目录内~~ok了 ~\(≧▽≦)/~
    (看来eclipse文件属性里的编码只是说以什么编码方式打开,和文件本身的编码的方式无关)

—————
    btw:两年多没有碰过java了,这次帮别的部门做项目,不得不又开始搞jsp,有了php的类比,深感用jsp/tomcat做web网站有多么麻烦,jstl简直多此一举。更喜欢php的方式:通过“”标签将服务器端逻辑和浏览器端的逻辑完全分开,简洁而不失优雅。反观el/jstl,非要将本来属于java端的逻辑与html混在一起~~~java还是适合做复杂的后台逻辑,然后用类似thrift的东西与web端解耦

Hello World

EL表达式语言语法及其他

${表达式}

EL的前世今生

EL即Expression Language,是一种简单的数据访问语言,最初是JSTL1.0中定义的,从JSTL1.1开始,Sun公司将其从JSTL分离出来,成为JSP2.0规范中单独的一部分,并增加了很多新的特性。

最基本的应用

${user}

等效于jsp脚本表达式:<%= pageContext.findAttribute(“user”) %>

访问javaBean中的属性对象中的属性

${lesson.student.id}

访问有序集合中的元素

${teacherIds[2]}

执行基本的关系运算、逻辑运算和算术运算

${1 > (5 / 2)}

输出结果:false

使用自定义函数完成一些复杂功能

${xyz:filter(“<img/>”)}

其中,xyz:filter是自定义函数,“<img/>”是传递给这个自定义函数的参数

EL表达式中使用一些列隐含对象

如:pageContext、cookie

在页面上输出”${“

“\” + “$”,即”\${xyz}”可以输出” ${xyz}”

另外,${“${”}可以输出”${”

忽略页面中所有的EL表达式

<%@ page isELIgnored=”true” %>

EL的基本语法

标识符(变量和自定义函数名称):有任意顺序的大小写字母、数值、下划线组成,不能以数值开头,不能使用EL中的保留字,布恩那个使用EL隐含对象的标识符,不能使用的符号:单引号,双引号,减号,正斜杠(/)

保留字:and,eq,or等

EL中的常量

布尔:true/false

整形:与java中的十进制整形常量相同

浮点数:取值范围同Double,可以使用指数形式(如1.2E4)

字符串:用单引号双引号引起来的一连串的字符

关于内部单/双引号的转义(\)规则:

只有用单引号引起来的字符串,内部的单引号才需要转义,双引号不需要转义

同理,只有双引号…

Null:

EL中的变量

El表达式语言的核心概念就是将变量映射到一个对象上,其中的变量不用先定义,而是直接使用,EL API中定义了javax.servlet.jsp.el.VariableResolver类来将一个变量名映射到某个对象上,他实现了隐含对象的映射,还实现了非隐含对象的变量标识符与各个域范围内的属性值的映射。

如果EL表达式中包含变量名不对应EL隐含对象的标识符,则EL引擎将调用pageContext.findAttribute()方法在各个域中(page,request,session,applecation)依次查找变量名的属性值,如果找到这个属性,则返回找到的属性值,如果没有找到,则返回null。

Hello World

request.getParameter() 与request.getAttribute()

一、request.getParameter() 和request.getAttribute() 区别
(1)request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。
(2)request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。
request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部
还有一点就是,HttpServletRequest类有setAttribute()方法,而没有setParameter()方法。
拿一个例子来说一下吧,假如两个WEB页面间为链接关系时,就是说要从1.jsp链接到2.jsp时,被链接的是2.jsp可以通过getParameter()方法来获得请求参数.
假如1.jsp里有

<form action=”2.jsp” method=”post”> 请输入用户姓名:
<input name=”username” type=”text” /> <input name=”Submit” type=”submit” value=”提交” /> </form>

的话在2.jsp中通过request.getParameter(“username”)方法来获得请求参数username:
< % String username=request.getParameter(“username”); %>
但是如果两个WEB间为转发关系时,转发目的WEB可以用getAttribute()方法来和转发源WEB共享request范围内的数据,也还是说一个例子吧。
有1.jsp和2.jsp
1.jsp希望向2.jsp传递当前的用户名字,如何传递这一数据呢?先在1.jsp中调用如下setAttribute()方法:

在2.jsp中通过getAttribute()方法获得用户名字:

二、request.getAttribute()与request.setAttribute()
request.getAttribute(“nameOfObj”)可得到JSP页面一表单中控件的Value。其实表单控件中的Object的 name与value是存放在一个哈希表中的,所以在这里给出Object的name会到哈希表中找出对应它的value。
而不同页面间传值使用request.setAttribute(position, nameOfObj)时,只会从a.jsp到b.jsp一次传递,之后这个request就会失去它的作用范围,再传就要再设一个 request.setAttribute()。而使用session.setAttribute()会在一个过程中始终保有这个值。

P.S.:JavaScript与JSP中不能相互传值,因为JavaScript运行在客户端,而JSP运行在服务器端。若想使它们之间可以相互传递参数,可以在JSP中设置一个hidden控件,用它的value结合上面所说的用法来传递所需的数值。

其他

如何配置JBOSS

这里主要讲XP下如何配置JBOSS运行所必须的环境变量,包括JDK和JBOSS

首先,右击“我的电脑”==》“属性”==》“高级”=》“环境变量”(点击“新建”或找到列表中对应的已有环境变量点击“编辑”)=》“编辑系统变量”

1.配置JDK:安装好JDK后,利用上面操作弹出的“编辑系统变量”对话框依次设置下列三个环境变量

①.新建“JAVA_HOME”

②.添加相关的“CLASSPATH”:

③.添加相关的“path”

经过上面三步以后,我们就完成了JDK环境变量的配置,其实,JDK本来是用不着专门找安装文件进行安装的,我们完全可以从其他已安装好JDK的电脑上直接复制下JDK和JRE目录,放到自己的电脑里,然后照上面的三步来配置即可。

2.配置JBOSS:可以到JBOSS的官网上下载jboss的打包文件(http://libs.jboss.com/jbossas/doownloads),然后直接解压已完成了jboss安装,然后配置JBOSS的环境变量:

①.新建JBOSS_HOME:

②.添加相关的“path”


验证jboss是否安装成功:进入你的jboss安装目录下的bin目录,双击运行run.bat,启动jboss,观察控制台有无异常抛出,如果没有异常抛出,并看到类似下图中的结果,这说明jboss安装成功:

补充:点击run.bat时,如果出现控制台一闪然后立即自动关闭的情况,有可能是因为你在修改path时不慎删掉了XP本身的环境变量,可以在警察一下你的“path”环境变量中是否包含下面的部分:;%SystemRoot%\system32;%SystemRoot%;

当jboss启动成功以后,可以在浏览器中输入http://localhost:8080,即可进入jboss的欢迎界面