- 浏览: 200323 次
- 性别:
- 来自: 包头
最新评论
-
chengeng:
图片没有显示。
登录系统-基于struts2+spring+hibernate分层架构 -
chengeng:
不知为什么,图片没有显示出来。
登录系统-基于struts2+spring+hibernateJPA分层架构 -
rdz09:
解析得很详细,不错
从头学起:struts2(1) -
zxd543:
图怎么都看不见呢?
登录系统-基于struts2+spring+hibernate分层架构 -
huweijie:
...
JAVA语言程序设计-第九章 异常处理
1.下载支持Netbeans7.0的Struts2插件,在工具-插件-已下载-添加插件菜单下安装struts2插件。
2.新建一个web项目,在步骤4中选择struts2选项,去掉“Create example page”选项:
在自动生成web.xml中,给出了struts2过滤器配置,默认拦截所有请求:“\*”,
<filter>
<filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
改成只拦截“*.action”和“*.jsp”,即只对struts和jsp文件拦截:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
在自动生成的struts.xml文件(位于缺省包中)里,加入如下代码:
<package name="book" extends="struts-default">
<action name="UserAction" class="book.action.UserAction">
<result name="msg">/index.jsp</result>
</action>
</package>
表示凡是经过struts2过滤的名为“UserAction”的action,均执行“book.action.UserAction”类程序,根据结果转向“index.jsp”页面。
3.创建如图所示的包结构:
4.在“bbok.common”包放置工具类用于数据库连接,在此添加DB_Conn.java文件:
package book.common;
import java.io.PrintWriter;
import java.sql.*;
public class DB_Conn {
private String driverName="com.mysql.jdbc.Driver"; //驱动程序名
private String userName="root"; //数据库用户名
private String userPwd="123456"; //密码
private String url="jdbc:mysql://localhost:3306/book"; //连接字符串
private Connection conn=null; //数据库连接对象
public Statement sm=null; //数据库语句对象
private PrintWriter out = null;
// 建立数据库连接
public void ConnectDB(){
try {
Class.forName(driverName).newInstance();
conn=DriverManager.getConnection(url,userName,userPwd); //获得数据库连接
sm=conn.createStatement();
} catch(Exception e) {
out.print("数据库连接失败!");
}
}
public void CloseDB(){
try {
if (sm != null) {
sm.close();
}
conn.close();
} catch (SQLException SqlE) {
out.print("数据库关闭失败!");
}
}
}
5.包“book.model”放置实体类,在此添加user.java文件:
package book.model;
public class User {
private String username;
private String password;
public String getUsername() { //用户名称
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() { //登陆密码
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
6.包“book.idao”放置数据访问接口,添加IUserDao接口文件:
package book.idao;
import book.model.User;
public interface IUserDao {
User fineOne(String userName,String userPassword);
}
7. 包“book.dao”放置数据访问类,添加UserDao.java文件,实现IUserDao接口,完成数据访问:
package book.dao;
import book.common.DB_Conn;
import book.model.User;
import book.idao.IUserDao;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao implements IUserDao{
//创建公用数据库连接类对象
DB_Conn db_conn=new DB_Conn();
//通过用户名称获取用户信息
@Override
public User fineOne(String username, String password) {
db_conn.ConnectDB();
ResultSet rs = null;
try {
String sql = "select * from admin where u_Name ='"
+ username + "' and u_Pass='" + password + "'";
rs = db_conn.sm.executeQuery(sql); // 执行sql语句
User user = null;
if (rs.next()) {
user = new User();
user.setUsername(username);
user.setPassword(rs.getString("u_Pass"));
return user;
}
return user;
}catch (SQLException SqlE) {
return null;
}catch (Exception E) {
return null;
}finally {
// 关闭连接,释放数据库资源:
db_conn.CloseDB();
}
}
}
8.在包“book.iservice”中放置数据的逻辑访问接口,在此添加IUserService.java接口文件:
package book.iservice;
import book.model.User;
public interface IUserService {
User findUserByNameAndPassword(String userName,String userPassword);
}
9. 包“book.service”放置数据逻辑访问类,添加UserService.java文件,实现IUserService,调用UserDao类的功能,完成对数据逻辑访问:
package book.service;
import book.iservice.IUserService;
import book.model.User;
import book.idao.IUserDao;
import book.dao.UserDao;
public class UserService implements IUserService{
private IUserDao userDao=new UserDao();
@Override
public User findUserByNameAndPassword(String userName,String userPassword){
return userDao.fineOne(userName, userPassword);
}
}
10.在“book.action”包中放置action类,以实现对系统的控制,在此添加UserAction.java文件,该action类调用数据的逻辑访问类UserService实现对数据库的查询,根据查询结果构造不同的字符串:
package book.action;
import com.opensymphony.xwork2.ActionContext;
import book.iservice.IUserService;
import book.service.UserService;
import book.model.User;
public class UserAction {
private IUserService userService=new UserService();
private String userName;
private String userPassword;
private String msg;
public String execute()throws Exception{
User user=userService.findUserByNameAndPassword(userName, userPassword);
if(user!=null){
msg="登录成功!"+user.getUsername();
ActionContext.getContext().getSession().put("user",user);
}else{
msg="登录失败!<a href=\"JavaScript:window.history.back()\">返回</a>";
}
return "msg";
}
public void setUserName(String userName){
this.userName=userName;
}
public void setUserPassword(String userPassword){
this.userPassword=userPassword;
}
public String getMsg(){
return msg;
}
}
11. 创建如下两个页面:
Login.jsp:
<%@ page pageEncoding="gb2312" %>
<%@ page contentType="text/html; charset=gb2312" %>
<% request.setCharacterEncoding("gb2312"); %>
<%@ page language="java" %>
<html>
<head><title>登录网页</title></head>
<body>
<form method="POST" action="UserAction.action">
<table >
<tr>
<td width="890" align="left" colspan="2">
<b><font size="5">系统登录</font></b>
<hr>
</td>
</tr>
<% if (request.getAttribute("error") != null){ %>
<tr>
<td width=100% align=center colspan=4 height=36>
<font color=red><b><%=request.getAttribute("error")%></b></font>
</td>
</tr>
<%
}
%>
<tr>
<td width="75" align="center">
<p align="right">账号:</p>
</td>
<td width="809" align="center">
<p align="left">
<input type="text" name="userName" size="20"></td>
</tr>
<tr>
<td width="75" align="center">
<p align="right">密码:</p>
</td>
<td width="809" align="center">
<p align="left">
<input type="password" name="userPassword" size="20">
<input type="submit" value="登录" name="loginButton"></td>
</tr>
</table>
</form>
</body>
</html>
在这个页面中,下面的form标记语句:
<form method="POST" action="UserAction.action">
表示该页面提交一个名为:"UserAction"的action,注意和struts.xml文件中的action的name相对应。
index.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示信息</title>
</head>
<body>
<h1>Hello World!</h1>
<div id="content">
<center>
<br/><%=request.getAttribute("msg")%>
</center>
</div>
</body>
</html>
该页面的标记语句:
<%=request.getAttribute("msg")%>
表示接收来自action的msg字符串。
12. 生成项目,并运行http://localhost:8080/login/login.jsp
发表评论
-
确认对话框ConfirmDialog和选择对话框OptionDialog:猜数游戏
2012-04-07 18:22 30926确认对话框ConfirmDialog给出提示信息和若干 ... -
输入对话框showInputDialog综合应用:猜数游戏
2012-04-06 17:13 7237Java输入对话框共有6个重载方法showInputDi ... -
消息对话框MessageDialog综合应用:九九表
2012-04-01 23:39 22588java信息对话框:MessageDialog是一个非常 ... -
从头学起:struts2(1)
2011-12-15 23:10 1406从头学起:struts2(1)从页面跳转说起:先看一个例子,使 ... -
登录系统-基于struts2+spring+hibernateJPA分层架构
2011-12-08 21:27 18871、新建一个mysql数据库,并新建连接,数据库结构如下图所示 ... -
登录系统-基于struts2+spring+hibernate分层架构
2011-11-29 21:43 34431、创建mysql数据库,结构如下图所示: 2、 ... -
依赖注入入门-从dao到service
2011-11-23 18:30 8181在分层的web应用系统中,通常将数据操作分为dao数据层和se ... -
登录系统-基于struts2+hibernate分层架构
2011-11-21 23:07 296本实验使用struts+hibernate分层结构,目的是可以 ... -
登录系统-基于servlet+hibernate分层架构
2011-11-21 12:13 3204本实验使用servlet+hibernate分层结构,目的是 ... -
登录系统-基于servlet
2011-11-19 19:48 31661. 新建一个web项目,在项目中添加两个包:Ja ... -
登录系统-基于servlet+hibernate
2011-11-19 19:01 41971.新建一个java web项目,在步骤4中选择Hiber ... -
基于NetBeans7.0的Hibernate编程入门
2011-11-19 11:47 1527基于NetBeans7.0的 Hebernate入门 ... -
实验13 数据库的连接:JDBC*
2011-03-28 22:02 1266一、实验目的 了解JDBC核心API,利用JDBC核心API ... -
实验14 JSP与Servlet技术*
2011-03-28 22:01 1290一、实验目的 1. 理解JSP元素的概念 2. 理解JSP ... -
实验12 网络编程
2011-03-28 21:59 1239一、实验目的 1. 掌握InetAddress类的使用。 2 ... -
实验11 线程
2011-03-28 21:59 893一、实验目的 1. 线程 ... -
实验10 流与文件
2011-03-28 21:58 981一、实验目的 1. 理解数据流的概念 2. 理解Java流的 ... -
实验 9 综合练习
2011-03-28 21:57 801一、实验目的 将所学知识进行综合运用,模仿设计具有实 ... -
实验 8 图形与多媒体处理
2011-03-28 21:56 922一、实验目的 熟悉图形、图像的使用方法,理解计算机动画 ... -
实验 7 建立图形用户界面
2011-03-28 21:54 1398一、实验目的 了解图形用户界面基本组件窗口、按钮、文本 ...
相关推荐
### J2EE电子商务系统开发从入门到精通——基于Struts和Hibernate技术实现 #### J2EE概论 **1.1 简单双层架构到复杂多层架构** - **1.1.1 双层(C/S)软件架构设计** - 双层架构(客户端/服务器架构,Client/...
本项目是一个基于Struts2和Hibernate框架的简单在线书店系统,采用MySQL作为后台数据库,旨在实现网上书店的基本业务功能,并且具有清晰的分层架构。以下是该系统的关键技术和实现细节的详细介绍。 **1. Struts2...
**基于Struts2的个人信息管理系统详解** Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发。在这个“基于Struts2的个人信息管理系统”中,我们将会探讨如何利用Struts2来构建一个高效...
**基于Struts2实现报道管理系统** Struts2是一款强大的MVC框架,用于构建Java Web应用程序。在报道管理系统中,Struts2起到了核心架构的作用,它提供了模型-视图-控制器的设计模式,使得开发者能够更有效地组织和...
《基于JSP Struts2和Hibernate3的图书馆管理系统详解》 图书馆管理系统是信息化时代图书馆管理的重要工具,它通过计算机技术实现图书的借阅、归还、检索、排序等一系列操作,大大提高了工作效率。本系统采用Java ...
本项目“学生成绩管理系统”就是基于Struts2、Spring和Hibernate三大主流Java Web框架进行整合的一个实例。这样的整合能够充分利用各框架的优势,实现模型-视图-控制器(MVC)架构,提供数据持久化、业务逻辑处理...
综上所述,基于Struts2的OA系统利用其强大的控制能力和组件扩展性,能够构建出功能完善、易维护的企业级应用。开发者可以通过合理的架构设计,结合Servlet技术,打造出高效、稳定、安全的OA系统,满足不同企业的个性...
在本篇论文中,作者深入探讨了J2EE(Java 2 Platform, Enterprise Edition)架构,针对J2EE架构存在的问题提出了解决方案。通过引入Struts、Spring和Hibernate这三大框架,形成了所谓的SSH(Struts + Spring + ...
### 基于Struts和Hibernate的J2EE架构的研究 #### 1. J2EE架构概述 J2EE(Java 2 Platform Enterprise Edition)是由Sun Microsystems推出的一种用于构建企业级应用的平台标准。该平台支持多层分布式应用,并且为...
这个基于Struts的留言板管理系统充分利用了Struts的核心特性,实现了用户交互、数据处理和业务逻辑的分离,提升了系统的可维护性和可扩展性。 首先,我们需要理解Struts的工作原理。Struts是一个MVC(Model-View-...
基于Struts架构的成绩管理系统,是一项综合运用了JSP、Tomcat、MySQL Server及Struts框架技术,旨在构建一套高效、灵活、易于维护的学生成绩管理解决方案的研究项目。本论文详细探讨了MVC架构下的JAVA WEB设计与开发...
- **系统架构设计**:采用分层架构模式,包括表示层、业务逻辑层和数据持久层。每一层都有相应的package,如controller、service、dao等。 - **Spring配置**:在applicationContext.xml中定义UserLibrary,添加所有...
### 基于Struts、Hibernate和Spring的J2EE架构研究 #### 一、引言 随着互联网技术的发展和企业需求的日益多样化,软件开发领域面临着越来越多的挑战。为了解决这些问题,J2EE(Java 2 Platform, Enterprise ...
在本案例中,"struts2做的学生管理系统"是一个基于Struts2框架开发的项目,主要用于管理学生的各种信息。该项目利用了SQL Server 2005作为后端数据库,提供了数据存储和查询的功能。 首先,让我们深入理解Struts2的...