Struts2框架图书管理系统

1.在之前写的Struts2框架基础上在src下创建各个分层结构。首先创建com包再在com包下建hnpi包再在com.hnpi包下建action,been,dao,interceptor,service,util包,如图:Struts2框架图书管理系统

还要在com.hnpi.service,com.hnpi.dao下建impl包,如图:
Struts2框架图书管理系统
2.创建视图层,注意还是需要按层级,创建不同的文件,不同的视图需要放在不同的文件下:如图;

Struts2框架图书管理系统

在WebRoot文件下,创建了book和user两个文件夹,用来区分不同的视图,两个文件夹下有booklist.jsp和login.jsp.
其中的代码段如下:

login.jsp:

<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"?/"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<title>登录页面</title>
用户名:
密码:

booklist.jsp:

<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>
<%@ taglib prefix=“s” uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"?/"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<title>图书列表</title>

<style type="text/css">
body{
	margin-left: 300pt;
}
table,table tr th, table tr td 
	{
		border: 1px solid grey
	 }
</style>
新增图书
ID 书名 作者 ISBN 出版社 操作

<s:iterator value="#request.books" status=“book”>

<s:property value=“id”/>
<s:property value=“bookName”/>
<s:property value=“bookAuthor”/>
<s:property value=“bookIsbn”/>
<s:property value=“bookPublish”/>
更新  删除

</s:iterator>

</table>

Java代码方面com.hnpi包下各个分层代码如下
首先action层下的代码如下:
BookAction.java:

package com.hnpi.action;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.hnpi.bean.Book;
import com.hnpi.service.BookService;
import com.hnpi.service.impl.BookServiceImpl;
import com.opensymphony.xwork2.ActionSupport;

public class BookAction extends ActionSupport {

private Book book;
public Book getBook() {
	return book;
}

public void setBook(Book book) {
	this.book = book;
}


/**
 * 图书列表
 * @return
 */
public String bookList() {
	BookService bookService = new BookServiceImpl();
	List<Book> books = new ArrayList<Book>();
	books = bookService.selectBooks();
	
	HttpServletRequest request = ServletActionContext.getRequest();
	request.setAttribute("books", books);

	return "success";
}

}

LoginAction.java:

package com.hnpi.action;

import java.util.Map;

import javax.servlet.http.HttpSession;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

private String name;
private String pwd;
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getPwd() {
	return pwd;
}
public void setPwd(String pwd) {
	this.pwd = pwd;
}


public String login(){
	System.out.println(name+":"+pwd);
	if(name !=null &&!"".equals(name) && pwd !=null &&!"".equals(pwd)){
		//判断
		if(name.equals("fuxian")&&pwd.equals("123")){
			
			Map<String, Object> session = ActionContext.getContext().getSession();
			session.put("user", name);
			return "success";
		}else{
			return "error";
		}
	}else{
		return "error";
	}
}

}

been层的代码如下:
Been.java:

package com.hnpi.bean;

public class Book {

private int id;
private String bookName;
private String bookAuthor;
private String bookIsbn;
private String bookPublish;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getBookName() {
	return bookName;
}
public void setBookName(String bookName) {
	this.bookName = bookName;
}
public String getBookAuthor() {
	return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
	this.bookAuthor = bookAuthor;
}
public String getBookIsbn() {
	return bookIsbn;
}
public void setBookIsbn(String bookIsbn) {
	this.bookIsbn = bookIsbn;
}
public String getBookPublish() {
	return bookPublish;
}
public void setBookPublish(String bookPublish) {
	this.bookPublish = bookPublish;
}

public Book() {
	super();
}
public Book(int id, String bookName, String bookAuthor, String bookIsbn,
		String bookPublish) {
	super();
	this.id = id;
	this.bookName = bookName;
	this.bookAuthor = bookAuthor;
	this.bookIsbn = bookIsbn;
	this.bookPublish = bookPublish;
}

public String toString() {
	return "Book [bookAuthor=" + bookAuthor + ", bookIsbn=" + bookIsbn
			+ ", bookName=" + bookName + ", bookPublish=" + bookPublish
			+ ", id=" + id + "]";
}

}

dao层的代码如下:
BookDao.java:

package com.hnpi.dao;

import java.util.List;

import com.hnpi.bean.Book;

public interface BookDao {

public List<Book> selectBooks();

}

dao下的impl层代码如下:
BookDaoFileImpl.java

package com.hnpi.dao.impl;

import java.util.List;

import com.hnpi.bean.Book;
import com.hnpi.dao.BookDao;

public class BookDaoFileImpl implements BookDao{

public List<Book> selectBooks() {
	// TODO 读取文件的代码
	return null;
}

}

BookDaoImpl.java:

package com.hnpi.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.hnpi.bean.Book;
import com.hnpi.dao.BookDao;
import com.hnpi.util.DBUtil;

public class BookDaoImpl implements BookDao {

public List<Book> selectBooks() {
	Connection conn = DBUtil.getConn();
	String sql = "select * from book";
	PreparedStatement ps = null;
	ResultSet rs = null;
	
	List<Book> books = new ArrayList<Book>();
	
	try {
		ps = conn.prepareStatement(sql);
		
		rs = ps.executeQuery();
		while(rs.next()){
			Book book = new Book();
			book.setId(rs.getInt(1));
			book.setBookName(rs.getString(2));
			book.setBookAuthor(rs.getString(3));
			book.setBookIsbn(rs.getString(4));
			book.setBookPublish(rs.getString(5));
			books.add(book);
		}

	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		DBUtil.closeConn(conn, ps, null);
	}

	return books;
}

}

BookDaoRedisImpl.java

package com.hnpi.dao.impl;

import java.util.List;

import com.hnpi.bean.Book;
import com.hnpi.dao.BookDao;

public class BookDaoRedisImpl implements BookDao{

public List<Book> selectBooks() {
	// TODO 访问缓存的代码
	return null;
}

}

interceptor层下的代码:
UserInterceptor.java:

package com.hnpi.interceptor;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class UserInterceptor extends AbstractInterceptor{

@Override
public String intercept(ActionInvocation invocation) throws Exception {
	String user=(String) ActionContext.getContext().getSession().get("user");
    if (user==null||"".equals(user)) {
        return "fail";
    }
    return invocation.invoke();
}

}

service层下的代码:
BookService.java:

package com.hnpi.service;

import java.util.List;

import com.hnpi.bean.Book;

public interface BookService {

/**
 * 查询所有图书
 * @return
 */
public List<Book> selectBooks();

}

service层下impl的代码:
BookServiceImpl.java

package com.hnpi.service.impl;

import java.util.List;

import com.hnpi.bean.Book;
import com.hnpi.dao.BookDao;
import com.hnpi.dao.impl.BookDaoFileImpl;
import com.hnpi.dao.impl.BookDaoImpl;
import com.hnpi.service.BookService;

public class BookServiceImpl implements BookService {

public List<Book> selectBooks() {
	BookDao bookDao = new BookDaoImpl();

// BookDao bookDao = new BookDaoRedisImpl();
// BookDao bookDao = new BookDaoFileImpl();
return bookDao.selectBooks();
}

}

util层下代码:
DBUtil.java:

package com.hnpi.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBUtil {

public static Connection getConn() {

String url = "jdbc:sqlserver://localhost:1433;databaseName=MyDB";
String user = "sa";
String pwd = "1";
Connection conn = null;

try {
	Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	conn = DriverManager.getConnection(url, user, pwd);
} catch (SQLException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
} catch (ClassNotFoundException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}
return conn;

}

public static void closeConn(Connection conn, PreparedStatement ps,
ResultSet rs) {

try {
	if (conn != null) {
		conn.close();
	}
} catch (SQLException e) {

	e.printStackTrace();
}

try {
	if (ps != null) {
		ps.close();
	}
} catch (SQLException e) {

	e.printStackTrace();
}

try {
	if (rs != null) {
		rs.close();
	}
} catch (SQLException e) {

	e.printStackTrace();
}

}

}

最后需要配置struts.xml

<?xml version="1.0" encoding="UTF-8"?> /book bookList bookList /user/login.jsp
	<interceptors>
		<interceptor name="userInterceptor" class="com.hnpi.interceptor.UserInterceptor"></interceptor>
		
		<interceptor-stack name="selfStack">
			<interceptor-ref name="userInterceptor"></interceptor-ref>
			<interceptor-ref name="defaultStack"></interceptor-ref>
		</interceptor-stack>
	</interceptors>
	<default-interceptor-ref name="selfStack"></default-interceptor-ref>
	
	<global-results>
		<result name="fail">/user/login.jsp</result>
	</global-results>
	
	
	<action name="bookList" class="com.hnpi.action.BookAction" method="bookList">
		<result name="success">/book/bookList.jsp</result>
	</action>

以上就是整个Struts2框架图书管理系统的主要代码了,希望对您有所帮助!!!