hasLogin.jsp页面代码:
<%@ page language="java" %>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF">
<%String str="你已经登陆!";
response.sendRedirect("index.jsp?warning=str");%>
</body>
</html> index.jsp页面代码:
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head><title>Welcome</title></head>
<body>
<%String str1=new String(request.getParameter("warning").getBytes("ISO8859_1"),"gb2312");%>
<center><%=str1%></center>
</body>
</html>
为什么我在index.jsp中会获取显示不了warning"你已经登陆"的提示?之前有用户登陆页面login.html使用form表单提交数据,已经使用到了一次request,在这里再使用request获取参数warning是不是会有问题?
错误提示:
HTTP ERROR: 500 Internal Server Error
RequestURI=/userInfo/index.jsp
<%@ page language="java" %>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF">
<%String str="你已经登陆!";
response.sendRedirect("index.jsp?warning=str");%>
</body>
</html> index.jsp页面代码:
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head><title>Welcome</title></head>
<body>
<%String str1=new String(request.getParameter("warning").getBytes("ISO8859_1"),"gb2312");%>
<center><%=str1%></center>
</body>
</html>
为什么我在index.jsp中会获取显示不了warning"你已经登陆"的提示?之前有用户登陆页面login.html使用form表单提交数据,已经使用到了一次request,在这里再使用request获取参数warning是不是会有问题?
错误提示:
HTTP ERROR: 500 Internal Server Error
RequestURI=/userInfo/index.jsp
08:58:10,812 WARN [jbossweb] WARNING: Exception for /userInfo/index.jsp
java.lang.NullPointerException
at org.apache.jsp.index$jsp._jspService(index$jsp.java:87)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:360)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:558)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1714)
at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:505)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1664)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.jboss.jetty.Jetty.service(Jetty.java:460)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:770)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:932)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:787)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:201)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:289)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:454)
同样的错误提示:
HTTP ERROR: 500 Internal Server Error(内部服务出错)
RequestURI=/userInfo/index.jsp
%>
<jsp:forward page="index.jsp?warning=<%=str%>>
</jsp:forward>
要这样写:
<%String str="你已经登陆!";
%>
<jsp:forward page="index.jsp>
<jsp:param name="name" value=<%=str%>/>
</jsp:forward>
用sendRedirect跳转方式那个
跳转后路径是否正确
<%@ page contentType="text/html;charset=gb2312"%>
<%
String name=null;
Cookie[]c=request.getCookies(); //因为要在首页中显示"XXX,欢迎你"(XXX是登陆用户名),所以这里的读取cookies使用到了request,这就是所
//说的第一次request.
for (int i=0;i<c.length;i++){
if (c[i].getName().equals("username")){
name=c[i].getValue();
}
}
%> <html>
<head><title>Welcome</title></head>
<body>
<center><%=name%> 欢迎你!</center> //读取name变量.
<%String str1=new String(request.getParameter("warning").getBytes("ISO8859_1"),"gb2312");%> //这里是我跳转到该页时携带参数
//warning的显示处理.
<center><%=str1%></center>
</body>
</html>
我应该怎么处理这样的冲突啊?
http://blog.csdn.net/rascalboy520/archive/2008/06/06/2516038.aspx
我在hasLogin.jsp页面中传字符也是一样的,最终的运行结果都是NULL,代码如下:
<%@ page contentType="text/html; charset=GBK" %>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html>
<head>
<title>Lomboz JSP</title>
<%
String CONTENT_TYPE = "text/html; charset=GBK";
response.setContentType(CONTENT_TYPE);//设置输出字符集
request.setCharacterEncoding("GBK");//设置输入字符集
%>
</head>
<body bgcolor="#FFFFFF">
<jsp:forward page="index.jsp">
<jsp:param name="warning" value="123dsf!"/>
</jsp:forward></body>
</html>index.jsp页面:
<!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. -->
<%@ page contentType="text/html; charset=GBK"%><%String CONTENT_TYPE ="text/html; charset=GBK";
response.setContentType(CONTENT_TYPE);//设置输出字符集
request.setCharacterEncoding("GBK");//设置输入字符集
%>
<%
String name=null;
Cookie[]c=request.getCookies();
for (int i=0;i<c.length;i++){
if (c[i].getName().equals("username")){
name=c[i].getValue();
}
}
%> <html>
<head>
<title>Welcome</title>
</head>
<body>
<center><%=name%> 欢迎你!<%=request.getParameter("warning")%></center>
</body>
</html>这里传的参数warning就算是字符"123dsf!",运行以后显示的还是"NULL",怎么会取不到结果的呢?真是搞不懂了,好象不是中文参数处理的问题了~
这样也行?
str是字符串“str”
不可能取到
</jsp:forward>
</jsp:forward> 按照你这样改了,结果当我提交表单的时候,提示如下:HTTP ERROR: 500 Internal Server Error
RequestURI=/userInfo/index.jsp
1.用户登陆界面login.html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>中国原创基地-就业服务信息平台</title>
<style type="text/css">
<!--
.style4 {font-size: 14px}
body {
margin-top: 0px;
}
-->
</style>
</head><body>
<script language="JavaScript">
function valid(form){ if(form.username.value.length==0) { alert("请输入用户名!"); form.username.focus(); return false; } if(form.password.value.length==0) { alert("请输入密码!"); form.password.focus(); return false; }}
</script><table width="658" height="484" border="1" align="center" bordercolorlight="#000000" bordercolordark="#FFFFFF" cellpadding="0" cellspacing="0">
<tr>
<td height="447"> </td>
</tr>
<tr>
<td height="28">
<table width=100% height="28" border="0" cellSpacing=0 cellPadding=0>
<form onsubmit="return valid(this)" action="login" method="post">
<tr>
<td>
用户名:
<input name="username" type="text" size="10" maxlength="12">
密码:<input name="password" type="password" size="10" maxlength="20">
<input type="submit" name="loginup" value="登陆"> <input type="reset" name="Reset" value="重置">
<span class="style4"> 没有帐号? 点此<a href="register.html">注册</a>新用户</span>
</td>
</tr>
</form>
</table>
</td>
</tr>
</table>
</body>
</html>该页面使用form表单提交一个请求,携带参数username和password,使用Login.java(一个servlet)进行处理.
<1>存在userinfo表:(分两种情况)
(1)用户名存在cookies中, 处理:跳转到hasLogin.jsp,并且继续跳转到index.jsp,然后在index.jsp中显示"你已经登陆!";
(2)用户名不存在在cookies中, 处理:写入cookies,并跳转到index.jsp;
<2>不存在userinfo表:用户输入的的名字不正确,所以跳到login.html(也就是页面没有变动);代码如下:
package com.servlet;
import java.io.*;
import java.sql.*;
import java.lang.String;
import javax.servlet.*;
import javax.servlet.http.*;
public class Login extends HttpServlet
{
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String Username = request.getParameter("username");
String Password = request.getParameter("password");
Cookie cookie=null;
Cookie[] cookies=request.getCookies(); try{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/userdatabase","root","");
Statement sqlStmt=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
ResultSet sqlRst=sqlStmt.executeQuery("select * from userInfo where username='" +Username+ "' and password='" +Password+"'");if(sqlRst.next()){
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
if(cookies[i].getName().equals("Username")){
response.sendRedirect("hasLogin.jsp");
}
cookie=cookies[i];
}//for结束
}
if((cookies==null)||(!cookie.getName().equals("Username"))){
int maxAge=3600; //1小时(3600秒)cookie存活期
cookie=new Cookie("username",sqlRst.getString("username"));
cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}
response.sendRedirect("index.jsp");
}
else{
response.sendRedirect("login.html");
}
sqlRst.close();
sqlStmt.close();
conn.close();
}catch(ClassNotFoundException e){
System.out.print("数据库连接失败!"+e.toString());}
catch(Exception sqle){
out.println(sqle.toString());
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{ doPost(request,response);
}} //Login结束