创建一个Java应用程序,实现权限验证系统,要求提前把用户的信息存放到磁盘文件中,程序运行时,用户输入 10

java作业求各位高手解答... java 作业求各位高手解答 展开
 我来答
赵小锤儿
2013-06-12 · 超过14用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:42.4万
展开全部
界面:
import java.awt.Container;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
* 仿QQ登录界面
*
* @author jiang
*/
public class GUIQQ extends JFrame {
// 用户名
private JTextField username;
// 密码
private JPasswordField password;
// 小容器
private JLabel jl1;
private JLabel jl2;
private JLabel jl3;
private JLabel jl4;

// 小按钮
private JButton bu1;
private JButton bu2;
private JButton bu3;

// 复选框
private JCheckBox jc1;
private JCheckBox jc2;

// 列表框
private JComboBox jcb;

/*
* 构造方法
*/
public GUIQQ() {
// 设置窗口标题
this.setTitle("QQ2012正式版");
// 窗体组件初始化
init();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置布局方式为绝对定位
this.setLayout(null);

this.setBounds(0, 0, 355, 265);
// 设置窗体的标题图标
Image image = new ImageIcon("e:/a.gif").getImage();
this.setIconImage(image);

// 窗体大小不能改变
this.setResizable(false);

// 居中显示
this.setLocationRelativeTo(null);

// 窗体可见
this.setVisible(true);
}

/*
* 初始化方法
*/
public void init() {
// 创建一个容器
Container con = this.getContentPane();
jl1 = new JLabel();
// 设置背景图片
Image image1 = new ImageIcon("e:/background.jpg").getImage();
jl1.setIcon(new ImageIcon(image1));
jl1.setBounds(0, 0, 355, 265);

// QQ登录头像设定
jl2 = new JLabel();
Image image2 = new ImageIcon("e:/a.gif").getImage();
jl2.setIcon(new ImageIcon(image2));
jl2.setBounds(40, 95, 50, 60);

// 用户号码登录输入框
username = new JTextField();
username.setBounds(100, 100, 150, 20);
// 用户号码登录输入框旁边的文字
jl3 = new JLabel("注册账号");
jl3.setBounds(260, 100, 70, 20);

// 密码输入框
password = new JPasswordField();
password.setBounds(100, 130, 150, 20);
// 密码输入框旁边的文字
jl4 = new JLabel("找回密码");
jl4.setBounds(260, 130, 70, 20);

// 输入框下方文字
jc1 = new JCheckBox("记住密码");
jc1.setBounds(105, 155, 80, 15);
jc2 = new JCheckBox("自动登录");
jc2.setBounds(185, 155, 80, 15);

// 用户登录状态选择
jcb = new JComboBox();
jcb.addItem("在线");
jcb.addItem("隐身");
jcb.addItem("离开");
jcb.setBounds(40, 150, 55, 20);

// 按钮设定
bu1 = new JButton("登录");
bu1.setBounds(280, 200, 65, 20);
// 给按钮添加1个事件
bu1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
String str=e.getActionCommand();
if("登录".equals(str)){
String getName =username.getText();
// String getPwd =password.getText();
JOptionPane.showConfirmDialog(null, "您输入的用户名是"+getName);
}

}
});

bu2 = new JButton("多账号");
bu2.setBounds(5, 200, 75, 20);
bu3 = new JButton("设置");
bu3.setBounds(100, 200, 65, 20);

// 所有组件用容器装载
jl1.add(jl2);
jl1.add(jl3);
jl1.add(jl4);
jl1.add(jc1);
jl1.add(jc2);
jl1.add(jcb);
jl1.add(bu1);
jl1.add(bu2);
jl1.add(bu3);
con.add(jl1);
con.add(username);
con.add(password);

}

public static void main(String[] args) {
// 实例化对象
GUIQQ qq = new GUIQQ();
}

}
后台:
这是一个需要在下面用到的一个自定义运行时异常:

package com.pb.web.exectpion;
/**
* 专用于用户登陆检查的Exception
* @author Voishion
*/
public class DataAccessException extends RuntimeException{

private static final long serialVersionUID = 744741608422506769L;

public DataAccessException() {
super();
// TODO Auto-generated constructor stub
}

public DataAccessException(String message) {
super(message);
// TODO Auto-generated constructor stub
}

}
这是用户登陆的接口:UserDao,因为项目比较简单就省去了业务层的代码,有GenericDao,但是不用紧张,我们的登陆方法比较特殊,所以就没有在GenericDao上面定义:
package com.pb.web.dao;

import com.pb.blog.entity.User;
import com.pb.web.base.GenericDao;

public interface UserDao extends GenericDao<User, Integer>{

/**
* 用户登录
* @param name
* @param pass
* @return
* @throws RuntimeException
*/
public User login(String name,String pass) throws RuntimeException;
}

这是我们UserDaoImpl的实现类,当我的用户名和密码正确的时候就返回给Contorl层一个User对象,当用户名或密码错误的时候,我将通过自定义异常DataAccessException来返回给用户错误信息

package com.pb.web.dao;

import java.sql.SQLException;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;

import com.pb.blog.entity.User;
import com.pb.web.base.GenericDaoImpl;
import com.pb.web.exectpion.DataAccessException;

public class UserDaoImpl extends GenericDaoImpl<User, Integer> implements UserDao{
@Override
public User login(String name, final String pass) throws RuntimeException{
final String hql="from User where username = '" + name +"'";
return (User) this.getHibernateTemplate().execute(new HibernateCallback() {
User user = null;
@Override
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
user = (User) session.createQuery(hql).uniqueResult();
if(user == null){
//用户名不存在
throw new DataAccessException("用户名账号错误");

}else{
//用户存在,判断密码
if(!user.getPassword().equals(pass)){
throw new DataAccessException("用户密码错误");
}
}
return user;
}
});
}
}

接下来就是在Contort层来使用方法了,首先声明本人使用了Spring的事务管理以及IOC,还有就是Struts.xml的配置也省略了,SO You understand^^

package com.pb.web.action;

import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;
import com.pb.blog.entity.User;
import com.pb.web.service.UserService;

public class UserAction extends ActionSupport implements SessionAware{
private static final long serialVersionUID = -5053933981088584268L;

private String msg;
private User user;
private UserService service;
private Map<String, Object> session;

public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void setService(UserService service) {
this.service = service;
}
public void setSession(Map<String, Object> session) {
this.session = session;
}

/**
* 登陆用户
* @return
*/
public String login(){
try {
user = service.loginCheck(user);
if(user != null){
session.put("user", user);
msg = "true";
}
} catch (RuntimeException e) {
msg = e.getMessage();
}
return "LOGIN";
}

接下来在页面上使用Jquery来访问吧!-----

/**无刷新登陆及验证*/
function login(){
var name = $("#name").val();
var pass = $("#pass").val();
if((name != null && name !="") && (pass != null && pass !="")){
var params = {"user.username":name,"user.password":pass};
$.ajax({
url:"user!login.action",
type:"post",
data:params,
dataType:"json",
success:function(data){
if(data.msg == "true"){
$("#templatemo_logoutMsg").html("").append("Welcome,"+data.user.username+"!<a href=\"#\">个人主页</a>|<a href=\"#\" onclick=\"logout();\">退出</a>");
$("#templatemo_logout").show();
$("#templatemo_login").hide();
}else{
$("#templatemo_loginMsg").html(data.msg);
}
},
error:function(){
$("#templatemo_loginMsg").html("网络连接异常");
}
});
}else{
$("#templatemo_loginMsg").html("用户名和密码不能为空");
}
}

所以这样一来,是不是用户就可以清楚的知道,到底是用户名错误还是密码错误了呢?????欢迎提出升级意见哦……………………TKS
种危c
2013-06-10
知道答主
回答量:10
采纳率:0%
帮助的人:4万
展开全部
应该就是个用户登录的JAVA应用,把用户信息从文件中读出来放数组里,然后和界面上的输入做比较就可以了吧
追问
要程序呢?思路我也有
追答

这样可以吧,当时你也可以做个UI,原理也一样的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式