JavaOOP 问题求解答
要求:
1、 创建User类保存固定的用户信息,不可以将用户信息直接保存在JSP中;
2、 实现登录和登录后显示用户信息;登录成功后URL要显示为图2所示的效果;登录失败后URL要显示为图1所示的效果;
3、 页面跳转无异常;
4、 使用纯Java的方式连接数据库
a) JDBC驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver
b) JDBC URL:jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=exam
Java --------------------编程问答-------------------- java如何获取子网掩码 --------------------编程问答--------------------
对不住啊,帖子开多了,不小心回错地方了。。。 --------------------编程问答-------------------- 既然来了,就留下点什么吧!
最近看Ajax,感觉有个样例和LZ的要求差不多,不过需要自己再改改了。。
登录页面:
<html>
<head>
<title>注册用户唯一属性检查</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<script type="text/javascript">
var xmlHttp;
//创建XMLHttpRequest
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}
//启动AJAX异步动心方法
function beginCheck(){
var tempLoginName = document.all.loginName.value;
if(tempLoginName == ""){
alert("请输入注册名!");
return;
}
createXMLHttpRequest();
//状态触发器绑定到函数
xmlHttp.onreadystatechange = processor;
//通过get方法向指定URL建立服务器的调用
xmlHttp.open("GET","CheckUser?loginName="+tempLoginName);
//发送请求
xmlHttp.send(null);
}
//处理状态改变的函数
function processor(){
var responseContex;
if(xmlHttp.readyState == 4){//响应完成
if(xmlHttp.status == 200){//返回成功
responseContex = xmlHttp.responseText;
if(responseContex.indexOf("true")!=-1){
alert("恭喜,该注册名有效");
}
else{
alert("注册名被占用!");
}
}
}
}
</script>
<body>
<form name="form1" action="CheckUser" method="POST">
请输入用户名:
<input name="loginName" type="text" id="loginName">
<input type="button" name="checkLoginName" value="有效性检查" onclick="beginCheck()">
</form>
</body>
</html>
上面的是校验用户名是否被占用的,LZ稍微改改。
后台的Servlet:
public class CheckUser extends HttpServlet
{
public void destroy()
{
super.destroy();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
String[] logined = {"admin","users","Tom","Jerry"};
String loginName = req.getParameter("loginName");
String responseContex = "true";
for(int i =0;i<logined.length;i++)
{
if(loginName.equals(logined[i]))responseContex = "false";
}
out.println(responseContex);
out.flush();
out.close();
}
@Override
public void init()
throws ServletException
{
}
}
这里不涉及jdbc的操作,后面给你个jdbc的样例。
下面是Servlet的配置文件,配置,在web.xml下追加配置:
<servlet>
<servlet-name>CheckUser</servlet-name>
<servlet-class>com.ajax.CheckUser</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckUser</servlet-name>
<url-pattern>/CheckUser</url-pattern>
</servlet-mapping>
以上配置好了就可以实现简单的跳转(来自《精通java Web 整合开发》)。
下面是jdbc的样例,LZ调整下,插入到适当的位置:
--------------------编程问答-------------------- 都不用数据库的更容易了,
public class TestSQLServerDriver {
public static void main(String[] args) {
String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=exam";
String user = "username";
String password = "u";
try {
// Load the driver (registers itself)
// 需要导入SQLServer驱动jar包:sqljdbc.jar
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection c = DriverManager.getConnection(dbUrl, user, password);
c.setAutoCommit(false);
Statement s = c.createStatement();
// SQL code:
ResultSet r = s.executeQuery("SELECT * FROM mytable");//sql自己改改吧~
while (r.next()) {
// Capitalization doesn't matter:
System.out.println(r.getString("row1") + ", "
+ r.getString("row2");
}
s.close(); // Also closes ResultSet
c.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
}
学过servlet没有,不然就用一个jsp页面接收吧,把用户名和密码发过去验证,比如验证:如果name.equal(“admin”)的话就跳转到显示信息页面,那么就是错误,可以跳到登陆页面
补充:Java , Eclipse