Struts2框架图书管理系统
1.在之前写的Struts2框架基础上在src下创建各个分层结构。首先创建com包再在com包下建hnpi包再在com.hnpi包下建action,been,dao,interceptor,service,util包,如图:
还要在com.hnpi.service,com.hnpi.dao下建impl包,如图:
2.创建视图层,注意还是需要按层级,创建不同的文件,不同的视图需要放在不同的文件下:如图;
在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框架图书管理系统的主要代码了,希望对您有所帮助!!!