今天完成的是昨天的作业。
其实就是通过struts实现前后端的简单交互,比如通过表单提交查看数据库中的内容。
一般这类的交互,代码主要分为三层,action,service,dao。
action:接收前端数据。
service:进行逻辑处理
dao:于数据库进行交互。
作业内容很简单,就是前端输入用户信息,提交到后端,我是先进行数据的插入,然后跳到一个页面,对数据库中的全部内容进行显示。
action层:
package com.swpu.homework.action;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.swpu.homework.dao.User;
import com.swpu.homework.service.DealData;
public class UserAction extends ActionSupport
{
private static final long serialVersionUID = 1L;
public User user=new User();
DealData deal=new DealData();
public User getUser()
{
return user;
}
public void setUser(User user)
{
this.user = user;
}
@Override
public String execute() throws Exception
{
String username=user.getUsername();
int id=user.getId();
String sql="insert into users VALUES("+id+",'"+username+"')";
String sql1="select * from users";
deal.update(sql);
List<User> list=deal.query(sql1);
ActionContext context=ActionContext.getContext();
Map session=context.getSession();
session.put("list", list);
if(list.size()>0)
return SUCCESS;
return "error";
}
}
dao层:其中javabean也在这个包中。
javabean:
package com.swpu.homework.dao;
public class User
{
private String username;
private int id;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
数据库操作封装类:
package com.swpu.homework.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DBUtils
{
public ResultSet resultSet = null;
public static final String URL = "jdbc:mysql://127.0.0.1/warehouse?useUnicode=true&characterEncoding=UTF-8";
public static final String NAME = "com.mysql.jdbc.Driver";
public static final String USER = "root";
public static final String PASSWORD = "";
public Connection conn=null;
public PreparedStatement statement=null;
public User user=null;
public DBUtils()
{
try
{
Class.forName(NAME);
conn=DriverManager.getConnection(URL, USER, PASSWORD);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public List<User> executeQuery(String sql)
{
List<User> list=new ArrayList<User>();
try
{
statement=(PreparedStatement)conn.prepareStatement(sql);
resultSet=statement.executeQuery();
while(resultSet.next())
{
user = new User();
user.setId(Integer.valueOf(resultSet.getString(1)));
user.setUsername(resultSet.getString(2));
list.add(user);
}
}
catch (SQLException e)
{
e.printStackTrace();
}
return list;
}
public void update(String sql)
{
try
{
statement=(PreparedStatement)conn.prepareStatement(sql);
statement.executeUpdate(sql);
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
service层:进行简单的逻辑处理。
package com.swpu.homework.service;
import java.util.ArrayList;
import java.util.List;
import com.swpu.homework.dao.DBUtils;
import com.swpu.homework.dao.User;
public class DealData
{
DBUtils utils=new DBUtils();
public void update(String sql)
{
utils.update(sql);
}
public List<User> query(String sql1)
{
List<User> list=new ArrayList<User>();
list=utils.executeQuery(sql1);
return list;
}
}
登录界面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="Login.action">
<table border=1>
<tr>
<td colspan="2" align="center">登录</td>
</tr>
<tr>
<td>id:</td>
<td><input type="text" name="user.id"></td>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text" name="user.username"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="注册"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
</body>
</html>
struts.xml配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="Login" class="com.swpu.homework.action.UserAction">
<result>/success.jsp</result>
</action>
</package>
</struts>
其实弄懂struts的流程之后,写些简单的还是没什么问题,只是因为不熟悉,所以会遇到一些小问题,而且解决起来还很麻烦,哎,代码码多了就好了。加油。