您的位置:首页 > 运维架构 > Tomcat

Java Web MVC开发,eclipse EE+mysql+tomcat+struts2+新浪SAE(二)

2016-10-12 18:17 375 查看

图书SaaS设计

一、工程文件列表



关键注意xml文件位置。

二、xml文件书写

1、web.xml

编码方式UTF8

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></web-app>


注意该语句

<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>


struts2.5.2该语句与以往版本不同,注意更改。

2、struts.xml

编码方式UTF8,该文件需配置jsp页面与各个动作间的联系。

固定模式为:

<action name="动作名称" class="Action类" method="调用Action类中的方法">
<result name="返回值1">/结果页面1.jsp</result>
<result name="返回值2">/结果页面2.jsp</result>
</action>


本实验配置:

<?xml
4000
version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="lab2" extends="struts-default">
<action name="Login">
<result>/index.jsp</result>
</action>
<action name="Search" class="lab2.Action" method="execute">
<result name="SUCCESS">/resulta.jsp</result>
<result name="FAILED">/fail.jsp</result>
</action>
<action name="Detail" class="lab2.Action" method="detail">
<result name="SUCCESS">/information.jsp</result>
<result name="FAILED">/fail.jsp</result>
</action>
<action name="Gotoedit" class="lab2.Action" method="gotoedit">
<result name="SUCCESS">/editbook.jsp</result>
</action>
<action name="Edit" class="lab2.Action" method="edit">
<result name="SUCCESS">/success.jsp</result>
<result name="ADD">/addauthor.jsp</result>
<result name="FAILED">/fail.jsp</result>
</action>
<action name="Delete" class="lab2.Action" method="delete">
<result name="SUCCESS">/success.jsp</result>
<result name="FAILED">/fail.jsp</result>
</action>
<action name="Addauthor" class="lab2.Action" method="addauthor">
<result name="SUCCESS0">/editbook.jsp</result>
<result name="SUCCESS1">/addbook.jsp</result>
<result name="FAILED">/fail.jsp</result>
</action>
<action name="Gotoadd">
<result>/addbook.jsp</result>
</action>
<action name="Addbook" class="lab2.Action" method="addbook">
<result name="SUCCESS">/success.jsp</result>
<result name="ADD">/addauthor.jsp</result>
<result name="FAILED">/fail.jsp</result>
</action>
</package>
</struts>


注意该语句

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">


版本为2.5,注意更改。

三、Action类

package lab2;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
public class Action {
private Pattern p = Pattern.compile("\\?");
/*private String sql1="insert into author(authorid,name,age,country) values(?,?,?,?)";
private String sql2="insert into book(isbn,title,authorid,publisher,publishdate,price) values(?,?,?,?,?,?)";
*/
private List<String> list = new LinkedList<String>();
private List<String> list0 = new LinkedList<String>();
ServletRequest request = ServletActionContext.getRequest();
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
private String username;
private String title;
private String isbn;
private String name;
private String publisher;
private String publishdate;
private String price;
private String age;
private String country;
private String authorid;
static int flag;
public String getUsername(){
return username;
}
public String getIsbn(){
return isbn;
}
public String getTitle(){
return title;
}
public String getName(){
return name;
}
public String getAuthorid(){
return authorid;
}
public void setUsername(String username) {
this.username = username;
}
public void setAuthorid(String authorid) {
this.authorid = authorid;
}
public void setTitle(String title) {
this.title = title;
}
public void setName(String name) {
this.name =name;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public void setPublishdate(String publishdate) {
this.publishdate = publishdate;
}
public void setPrice(String price) {
this.price = price;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public void setAge(String age) {
this.age = age;
}
public void setCountry(String country) {
this.country=country;
}
// all struts logic here
public String execute() {
String sql0 ="select AuthorID from Author where Name=?";
Matcher m1 = p.matcher(sql0);
String sql1 = m1.replaceFirst('"'+username+'"');
DBConnection connect = new DBConnection();
list0=connect.select(sql1);
if(list0.size() == 0)
return "FAILED";
String sql2 ="select Title from Book where AuthorID=?";
Matcher m2 = p.matcher(sql2);
String sql = m2.replaceFirst('"'+list0.get(0)+'"');
list=connect.select(sql);
session.setAttribute("list", list);
session.setAttribute("username",username);
if(list.size() == 0)
return "FAILED";
else
return "SUCCESS";
}
public String detail(){
String sql0 ="select * from Author where Name=?";
Matcher m1 = p.matcher(sql0);
String sql1 = m1.replaceFirst('"'+username+'"');
DBConnection connect = new DBConnection();
list0=connect.select(sql1);
session.setAttribute("list0", list0);
String sql2 ="select * from Book where Title=?";
Matcher m2 = p.matcher(sql2);
String sql3 = m2.replaceFirst('"'+title+'"');
list=connect.select(sql3);
session.setAttribute("list", list);
if(list.size()==0)
return "FAILED";
else
return "SUCCESS";
}
public String gotoedit(){
return "SUCCESS";
}
public String edit(){
flag = 0;
String[] sql=new String[6];
sql[0]="update Book set AuthorID=?,Publisher=?,PublishDate=?,Price=? where ISBN=?";
String sql0="select * from Author where Name=?";
Matcher m1 = p.matcher(sql0);
String sql1 = m1.replaceFirst('"'+name+'"');
DBConnection connect = new DBConnection();
list=connect.select(sql1);
list0=connect.select("select AuthorID from Author");
m1=p.matcher(sql[0]);
if(list.size()==0){
if(list0.size()==0)
authorid="1";
else
authorid=String.valueOf(Integer.parseInt(Collections.max(list0))+1);
}
else
authorid=list.get(0);
if(list.size()==0)
return "ADD";
sql[1] = m1.replaceFirst('"'+authorid+'"');
m1=p.matcher(sql[1]);
sql[2] = m1.replaceFirst('"'+publisher+'"');
m1=p.matcher(sql[2]);
sql[3] = m1.replaceFirst('"'+publishdate+'"');
m1=p.matcher(sql[3]);
sql[4] = m1.replaceFirst('"'+price+'"');
m1=p.matcher(sql[4]);
sql[5] = m1.replaceFirst('"'+isbn+'"');
int signal=connect.update(sql[5]);
if(signal==1)
return "SUCCESS";
else
return "FAILED";
}
public String addauthor(){
String[] sql=new String[5];
sql[0]="insert into Author(AuthorID,Name,Age,Country) values(?,?,?,?)";
Matcher m1 = p.matcher(sql[0]);
sql[1] = m1.replaceFirst('"'+authorid+'"');
m1 = p.matcher(sql[1]);
sql[2] = m1.replaceFirst('"'+name+'"');
m1 = p.matcher(sql[2]);
sql[3] = m1.replaceFirst('"'+age+'"');
m1 = p.matcher(sql[3]);
sql[4] = m1.replaceFirst('"'+country+'"');
DBConnection connect = new DBConnection();
int signal=connect.insert(sql[4]);
if(signal==1){
if(flag==0)
return "SUCCESS0";
else
return "SUCCESS1";
}
else
return "FAILED";
}
public String delete(){
String sql0 ="delete from Book where ISBN=?";
Matcher m1 = p.matcher(sql0);
String sql1 = m1.replaceFirst('"'+isbn+'"');
DBConnection connect = new DBConnection();
int signal=connect.delete(sql1);
if(signal==1)
return "SUCCESS";
else
return "FAILED";
}
public String addbook(){
flag=1;
String sql0="select * from Author where Name=?";
Matcher m1 = p.matcher(sql0);
String sql1 = m1.replaceFirst('"'+name+'"');
DBConnection connect = new DBConnection();
list=connect.select(sql1);
list0=connect.select("select AuthorID from Author");
if(list.size()==0){
if(list0.size()==0)
authorid="1";
else
authorid=String.valueOf(Integer.parseInt(Collections.max(list0))+1);
}
else
authorid=list.get(0);
if(list.size()==0)
return "ADD";
String sql="insert into Book(ISBN,Title,AuthorID,Publisher,PublishDate,Price) values(?,?,?,?,?,?)";
m1 = p.matcher(sql);
sql = m1.replaceFirst('"'+isbn+'"');
m1 = p.matcher(sql);
sql = m1.replaceFirst('"'+title+'"');
m1 = p.matcher(sql);
sql = m1.replaceFirst('"'+authorid+'"');
m1 = p.matcher(sql);
sql = m1.replaceFirst('"'+publisher+'"');
m1 = p.matcher(sql);
sql = m1.replaceFirst('"'+publishdate+'"');
m1 = p.matcher(sql);
sql = m1.replaceFirst('"'+price+'"');
int signal=connect.insert(sql);
if(signal==1)
return "SUCCESS";
else
return "FAILED";
}
}


四、数据库连接

1、数据库建立

在cmd输入以下命令:

CREATE DATABASE BookDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
create table Book(
ISBN varchar(100) not null primary key,
Title varchar(100) not null,
AuthorID varchar(100) not null,
Publisher varchar(100) not null,
PublishDate varchar(100) not null,
Price varchar(100) not null,
foreign key(AuthorID) references Author(AuthorID) on delete cascade on update cascade);
create table Author(
AuthorID varchar(100) not null primary key,
Name varchar(100) not null,
Age varchar(100) not null,
Country varchar(100) not null);


建立所需数据库,其中

CREATE DATABASE BookDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


设定数据库为utf8编码,方便中文处理。

2、数据库连接类

注意:1、检查java build path是否已添加mysqlconnecter库文件,否则报错。

2、根据情况修改

private String dbUrl="jdbc:mysql://主库地址:端口号/数据库名?characterEncoding=utf8";
private String dbUser="数据库用户名";
private String dbPass="数据库密码";


其中?characterEncoding=utf8确定编码方式。

3、sql语句中?替换为字符串时,不要忘记带双引号。

package lab2;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.LinkedList;
import java.util.List;
import java.sql.Connection;

public class DBConnection
{
private String dbDriver="com.mysql.jdbc.Driver";
private String dbUrl="jdbc:mysql://localhost:3306/BookDB?characterEncoding=utf8";//根据实际情况变化
private String dbUser="root";
private String dbPass="123456";
public Connection getConn()
{
Connection conn=null;
try
{
Class.forName(dbDriver);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
try
{
conn = DriverManager.getConnection(dbUrl,dbUser,dbPass);//注意是三个参数
}
catch (SQLException e)
{
e.printStackTrace();
}
return conn;
}

public int insert(String sql)
{
int i=0;
/*String sql="insert into author(authorid,name,age,country) values(?,?,?,?)";
String sql0="insert into book(isbn,title,authorid,publisher,publishdate,price) values(?,?,?,?,?,?)";
*/
Connection cnn=getConn();

try{
PreparedStatement preStmt =cnn.prepareStatement(sql);
i=preStmt.executeUpdate();
}
catch (SQLException e)
{
e.printStackTrace();
}
return i;//返回影响的行数,1为执行成功
}
public int update(String sql)
{
int i=0;
/*String sql="update author set  authorid=?,name=?,age=?,country=? where authorid=?";//注意要有where条件
*/
Connection cnn=getConn();

try{
PreparedStatement preStmt =cnn.prepareStatement(sql);
i=preStmt.executeUpdate();
}
catch (SQLException e)
{
e.printStackTrace();
}
return i;//返回影响的行数,1为执行成功
}
public List<String> select(String sql)
{
int i;
Connection cnn = getConn();//此处为通过自己写的方法getConn()获得连接
List<String> list = new LinkedList<String>();
try
{
Statement stmt = cnn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{
for(i = 1;i<=rs.getMetaData().getColumnCount();i++){
list.add(rs.getString(i));}
}
//可以将查找到的值写入类,然后返回相应的对象
}
catch (SQLException e)
{
e.printStackTrace();
}
return list;
}
public int delete(String sql)
{
/*String sql = "delete from author where authorid=?"; */
int i=0;
Connection conn = getConn();//此处为通过自己写的方法getConn()获得连接
try
{
Statement stmt = conn.createStatement();
i = stmt.executeUpdate(sql);
}
catch (SQLException e)
{
e.printStackTrace();
}
return i;//如果返回的是1,则执行成功;
}
}


其中

private String dbDriver="com.mysql.jdbc.Driver";
private String dbUrl="jdbc:mysql://localhost:3306/BookDB?characterEncoding=utf8";/*根据实际情况变化*/
private String dbUser="root";
private String dbPass="123456";


五、JSP页面

1、添加作者

<%@ page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>
<h1>请先添加作家</h1>
<center>
<s:form action="Addauthor">
<s:textfield name="isbn" label="ISBN"/>
<s:textfield name="authorid" label="编号" readonly="true"/>
<s:textfield name="name" label="作家名" readonly="true"/>
<s:textfield name="age" label="年龄"/>
<s:textfield name="country" label="国籍"/>
<s:submit value="添加"/>
</s:form>
</center>
</body>
</html>


2、添加书籍

<%@ page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>
<h1>添加图书</h1>
<center>
<s:form action="Addbook">
<s:textfield name="isbn" label="ISBN"/>
<s:textfield name="title" label="书名"/>
<s:textfield name="name" label="作家名"/>
<s:textfield name="publisher" label="出版社"/>
<s:textfield name="publishdate" label="出版日期"/>
<s:textfield name="price" label="价格"/>
<s:submit value="添加"/>
</s:form>
</center>
</body>
</html>


3、修改书籍信息

<%@ page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>
<h1>修改信息</h1>
<center>
<s:form action="Edit">
<s:textfield name="isbn" label="ISBN" readonly="true"/>
<s:textfield name="name" label="作家名"/>
<s:textfield name="publisher" label="出版社"/>
<s:textfield name="publishdate" label="出版日期"/>
<s:textfield name="price" label="价格"/>
<s:submit value="修改"/>
</s:form>
</center>
</body>
</html>


4、失败

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title></title>
</head>
<body>
<h1>Failed</h1>
<a href=Login><button type="button">返回主页</button></a>
</body>
</html>


5、首页

<%@ page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>
<h1>作家作品查询</h1>
<a href=Gotoadd><button type="button">添加图书</button></a>
<center>
<s:form action="Search">
<s:textfield name="username" label="作家名"/><s:submit value="查询"/>
</s:form>
</center>
</body>
</html>


6、详细信息

<%@ page contentType="text/html; charset=UTF-8" import="java.util.LinkedList,java.util.List"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>

<h1>
<s:property value="username" />详细信息
</h1>
<table border="1" align="center">
<tr>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>国家</td>
<tr>
<%List<String> list0 = (List<String>)session.getAttribute("list0");
for (int i = 0; i < list0.size(); i++) {
out.print("<td align=\"center\">"+list0.get(i)+"</td>");
} %>
</tr>
</table>
<h1>书籍详细信息</h1>
<table border="1" align="center">
<tr>
<td>ISBN</td>
<td>书名</td>
<td>作者编号</td>
<td>出版社</td>
<td>出版日期</td>
<td>价格</td>
<td>修改</td>
<td>删除</td>
<tr>
<%List<String> list = (List<String>)session.getAttribute("list");
for (int i = 0; i < list.size(); i+=6) {
out.print("<td align=\"center\">"+list.get(i)+"</td>");
out.print("<td align=\"center\">"+list.get(i+1)+"</td>");
out.print("<td align=\"center\">"+list.get(i+2)+"</td>");
out.print("<td align=\"center\">"+list.get(i+3)+"</td>");
out.print("<td align=\"center\">"+list.get(i+4)+"</td>");
out.print("<td align=\"center\">"+list.get(i+5)+"</td>");
out.print("<td align=\"center\"><a href=Gotoedit?isbn="+list.get(i)+"><button type=\"button\">修改</button></a></td>");
out.print("<td align=\"center\"><a href=Delete?isbn="+list.get(i)+"><button type=\"button\">删除</button></a></td>");
} %>
</tr>
</table>
<a href=Search?username=<%out.print(list0.get(1)); %>><button type="button">返回</button></a>
<a href=Login><button type="button">返回主页</button></a>
</body>
</html>


7、查询结果

<%@ page contentType="text/html; charset=UTF-8" import="java.util.LinkedList,java.util.List"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>
<h1>该作家作品</h1>

<h2>
<s:property value="username" />作品:
</h2>
<center>书籍名称</center>
<table border="1" align="center">
<%List<String> list = (List<String>)session.getAttribute("list");
String username = (String)session.getAttribute("username");
for (int i = 0; i < list.size(); i++) {
out.print("<td align=\"center\"><a href=Detail?title="+list.get(i)+"&username="+username+">"+list.get(i)+"</td>");
} %>
</tr>
</table>
<a href=Login><button type="button">返回主页</button></a>
</body>
</html>


8、成功

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title></title>
</head>
<body>
<h1>Success</h1>
<a href=Login><button type="button">返回主页</button></a>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: