JSP无法编译类解决方案

错误

org.apache.jasper.JasperException: Unable to compile class for JSP ,就是这个,就是在JSP文件中添加JavaBean的时候报错.比如:

//这一句报错,因为可能我们的Bean和JSP页面不在同一个文件夹.
//ok!

JSP调用JavaBean错误
image-1878

解决方案

我用了两个办法,请自行测试一下.
在这之前,我有必要说一下我的服务器环境:

  • tomcat-7.0.35:非Eclipse自带的,也非系统自带的,是自己安装的[好处很多].
  • JDK1.7:自行编译安装的

解决办法:

1.将tools.jar从$JAVA_HOME/lib复制到[tomcat]/lib/下面.[此处也需要注意你的CLASSPATH是否包含了JDK的tools.jar文件目录]
在Linux下面可以使用命令:


cp $JAVA_HOME/lib/tools.jar [tomcat]/lib/

2.看上面的图,看到Java Resources,进入,单击它,创建一个包:包名 bean ,然后在下面创建一个Bean[名称:Bean.java].然后在JSP页面里面引用..

3.就可以了.[如果还是不行,可以重启一下TOMCAT服务器.]

JSP无法显示图片

原因

今天在测试JSP的时候,发现无论怎么添加图片,都是显示X[404,不能显示].当时的路径是这样的:/JAVAWEB24/WebContent/images/6.9.1/0.gif,我本来是从Eclipse里面复制的[Copy Qualified Name,复制限定名称]路径.但是就是这个路径出问题了,后来我发现,这是访问的本地磁盘的路径!!.不信看图.

jsp无法显示图片
image-1875

解决办法

把路径修改成:
:/JAVAWEB24/images/6.9.1/0.gif
就可以了,貌似这就是服务器上的文件了.我们在服务器上访问文件,当然要用服务器路径了.

更多一点提示

看了一下Fedora19再过4天就发布正式版了[参见:http://fedoraproject.org],我准备升级了[不是因为尝新].只是因为我现在的fedora18没有分区,刚装fedora18的时候,完全不知道怎么分区,所以感觉隐患很大.因此,在这多说几句吧,怎样基本给Linux分区[供参考].

在安装Linux的时候,看到分区界面,选择自定义分区[此处假设你的硬盘是40G]:

选住总分区,然后点创建新分区,输入名称: /boot 大小:200MB 选择强制成为主分区 属性:ext4[或者更高]
然后再点击创建新分区,输入名称: / 大小:15GB 属性:ext4[或者更高]
然后再点击创建新分区,输入名称: /home 大小:20GB 属性:ext4[或者更高]
然后创建SWAP交换分区:直接选择属性SWAP,大小:2GB[你内存的一半即可]
接着写入硬盘即可.

配置Oracle服务器与客户端字符集

问题描述

一开始是设置字符集怎么设置怎么都不对,显示不出来,或者就是显示乱码.

后来,修改了本地的NLS_LANG就报下面的错误了.

ORA-12705: Cannot access NLS data files or invalid environment specified

Oracle LOGO
image-1872

解决方案

步骤[以SYS身份执行]:

shutdown immediate;//如果未开启数据库,可以略过这一句
startup mount;
alter session set sql_trace=true;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set internal_use utf8;
alter session set sql_trace=false;
shutdown immediate;
startup;

select userenv('language') from dual;

//下面是Linux操作

//这一句很重要,可能你设置的是UTF8.
//但这里显示的确不一样,[依据这个结果设置你的本地环境变量]
//我这查询的结果是:AMERICAN_AMERICA.UTF8[如果设置成别的,比如UTF8,运行sqlplus的时候就会报错[ORA-12705]]
//下面可以在另一个终端上进行操作!!
cd ~
vi .bash_profile
//去底部.增加下面的文字.
export NLS_LANG=AMERICAN_AMERICA.UTF8
:wq!//保存退出
//让其配置生效
source .bash_profile
source .bash_profile
//输出看一下是否正确
echo $NLS_LANG

//Linux操作结束

//回到sqlplus界面,重启数据库
STARTUP FORCE
CONN SYS/[PASSWORD] AS SYSDBA
CREATE TABLE TESTS(
SNAME VARCHAR2(50)
);
INSERT INTO TESTS
(SNAME)
VALUES
('测试');
SELECT * FROM TESTS;
//如果输出中文就表示配置正确了.
//另外如果使用工具连接,请在连接属性里将LANGUAGE设置为CHINA[或类似]

JSP应用cookie跟踪用户

简介

cookie的中文意思是小甜饼,然而在互联网上的意思就完全不通了,它和食品完全没有关系.在互联网中,cookie是小段的文本信息,在网络服务器上生成,并发送给浏览器.通过使用cookie可以标识用户身份,记录用户名和密码,跟踪重复用户等.浏览器将cookie以key/value的形式保存到客户机的某个指定目录中.

通过cookie的getCookies()方法即可获取所有cookie对象的集合:通过cookie对象的getName()方法可以获取指定名称的cookie,通过getValue()方法即可获取cookie对象的值.另外,将一个cookie对象发送到客户端使用了response对象的addCookie()方法.

cookie
image-1869

实现代码

1.创建index.jsp页面文件,在其中创建from表单,用于让用户输入信息:并且从request对象中获取cookie,判断是否含有此服务器发送过的cookie.如果没有,则说明该用户第一次访问本站,如果有,则直接将值读取出来,并赋给对应的表单,代码如下:



<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.net.URLDecoder"%>




应用cookie跟踪用户


<% request.setCharacterEncoding("UTF8"); //设置请求编码 response.setCharacterEncoding("UTF8"); //设置相应编码 String welcome = "第一次访问"; String[] info = new String[] { "", "", "" }; //定义字符串数组 Cookie[] cook = request.getCookies(); //获取所有的cookie对象 if (cook != null) { for (int i = 0; i < cook.length; i++) { //循环遍历cookie对象 if (cook[i].getName().equals("mrsoft")) { //获取指定名称的cookie String cvalue = URLDecoder.decode(cook[i].getValue()); //将cookie对象进行编码转换,避免乱码问题 info = cvalue.split("#"); //将获取的cookie值进行拆分 welcome = ",欢迎回来!"; } } } %>
<% String name = info[0]; //页面显示内容. %>
<%=name + welcome%>

  • 姓    名:
  • 出生日期:
  • 邮箱地址:



2.創建show.jsp頁面文件,在該頁面中通過request对象将用户输入的表单信息提取出来;创建一个cookie对象,并通过response对象的addCookie()方法将其发送到客户端.代码如下:


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.net.URLEncoder"%>>




创建cookie对象,发送到客户端


<% request.setCharacterEncoding("UTF8"); //设置请求编码,避免乱码. response.setCharacterEncoding("UTF8"); //设置相应编码,避免乱码 String name = request.getParameter("name"); //获取请求页面参数 String birthday = request.getParameter("birthday"); String mail = request.getParameter("mail"); Cookie myCook = new Cookie("mrsoft", URLEncoder.encode(name + "#" + birthday + "#" + mail));//创建cookie对象 myCook.setMaxAge(60 * 60 * 24 * 365);//设置cookie有效期. response.addCookie(myCook); //将cookie发送至客户端 %>
表单提交成功!

  • 姓名:<%=name%>
  • 生日:<%=birthday%>
  • 邮箱地址:<%=mail%>
  • 返回


JSP通过URL传递参数

入门提示

很多时候我们可以通过URL传递参数,形如: localhost:8080/index.jsp?name=test&id=1003这里面name=test&id=1003就是传递的参数,重要的一点,示例如下:


//一般使用的时候都是如下:

访问首页

//name=test 中的test可以不用["]引起来.
//传递多个参数可以使用[&]进行分隔

JSP指令标签
image-1864

创建页面,并进行测试


//index.jsp 主要界面.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




发送参数


获取传递的参数


然后再次新建一个界面:

//show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




参数输出页面


<% request.setCharacterEncoding("UTF8"); //这句话很重要,否则识别中文会出现乱码 String name = request.getParameter("name"); String id = request.getParameter("id"); %>
输出: 姓名:<%=name%>

id:<%=id%>