struts连接数据库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Web,xml
<?xml version="1.0"encoding="UTF-8"?>
<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID"version="3.0"><absolute-ordering></absolute-ordering>
<display-name>struts</display-name>
<filter>
<filter-name>struts</filter-name>
<filter-
class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAnd ExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
Music,java
package vo;
public class Music {
private int musicNo;
private String musicName;
private String singer;
private String size;
private String musicType;
public int getMusicNo() {
return musicNo;
}
public void setMusicNo(int musicNo) {
this.musicNo = musicNo;
}
public String getMusicName() {
return musicName;
}
public void setMusicName(String musicName) {
this.musicName = musicName;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getMusicType() {
return musicType;
}
public void setMusicType(String musicType) { this.musicType = musicType;
}
}
MusicDao.java
package dao;
import java.util.List;
import vo.Music;
public interface MusicDao {
List<Music> queryAllMusic();
boolean deleteMusic(int musicID);
}
MusicDaoImpl.java
package dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import util.JDBCutil;
import vo.Music;
public class MusicDaoImpl implements MusicDao{
Connection conn = null;
Statement st = null;
ResultSet rs = null;
boolean flag = false;
@Override
public List<Music> queryAllMusic() {
// TODO Auto-generated method stub
List<Music> list =new ArrayList<>();
String sql ="select * from musics"; /*表musics*/
conn = JDBCutil.getConnection();
try {
st = conn.createStatement();
rs=st.executeQuery(sql);
while(rs.next()){
Music music = new Music(); /*Music是实例vo*/
music.setMusicNo(rs.getInt("MUSIC_ID")); /*MusicNo 是实例的字段而 MUSIC_ID是数据库的字段*/
music.setMusicName(rs.getString("MUSIC_NAME"));
music.setSinger(rs.getString("SINGER"));
music.setSize(rs.getString("MUSIC_LENGTH"));
music.setMusicType(rs.getString("MUSIC_STYLE"));
list.add(music);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
@Override
public boolean deleteMusic(int musicID) {
// TODO Auto-generated method stub
return false;
}
}
MusicService.java
package service;
import java.util.List;
import vo.Music;
public interface MusicService {
List<Music> queryAllMusic();
}
MusicServiecImpl.java
package service;
import java.util.List;
import dao.MusicDao;
import dao.MusicDaoImpl;
import vo.Music;
public class MusicServiceImpl implements MusicService{
MusicDao music = new MusicDaoImpl(); //父类引用指向子类多态
@Override
public List<Music> queryAllMusic() { //ADD自动生成的根据方法
// TODO Auto-generated method stub
return music.queryAllMusic(); //根据music对象调用Dao层的方法}
}
Struts.xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"/dtds/struts-2.3.dtd">
<struts>
<package name="hello"namespace="/"extends="struts-default">
<action name="queryAction"
class="action.MusicManager"method="queryAllMusic">
<!-- <action中的name是跳转的超链接或是srca
href="queryAction.action" class是404路径问题没有找到路径 method 是action中的.action文件String queryAllMusic()-->
<result name="success"
type="dispatcher">/jsp/success.jsp</result>
<result name="error">/jsp/error.jsp</result> </action>
</package>
</struts>
MusicManager.java
package action;
import java.util.List;
import service.MusicServiceImpl;
import vo.Music;
public class MusicManager {
private Music music; //Music实体类
private List<Music> musicList; //定义集合用来显示数据库的数据public String queryAllMusic(){ //这个是struts中的method方法musicList = new MusicServiceImpl().queryAllMusic();
if(musicList!=null){
return "success";
}else{
return "error";
}
}
public Music getMusic() {
return music;
}
public void setMusic(Music music) {
this.music = music;
}
public List<Music> getMusicList() {
return musicList;
}
public void setMusicList(List<Music> musicList) {
this.musicList = musicList;
}
}
Index.jsp
<%@page language="java"contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html;
charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="queryAction.action">查询音乐</a><!-- action是用来跳转的在struts中<action name="queryAction"
class="com.chinasofti.eec.action.MusicManager" 跳转到action通过里面的返回值跳到succes.jsp -->
</body>
</html>
Success.jsp
<%@page language="java"contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="vo.Music"%>
<%@page import="java.util.List"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html;
charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
List<Music> musicList = (List<Music>)
request.getAttribute("musicList"); /*java脚本要写《% request.getAttribute("musicList")返回的是对象必须强转 */ %>
<table>
<tr>
<td>歌曲编号</td>
<td>歌曲名称</td>
<td>演唱者</td>
<td>歌曲长度</td>
<td>歌曲类型</td>
<td>操作</td>
</tr>
<%
for(int i=0;i<musicList.size();i++){
%>
<tr>
<td><%=musicList.get(i).getMusicNo()%></td>
<!-- 返回到界面的返回信息是vo实体层的变量而Music music = new Music(); 把数据库的信息封装到bean中
music.setMusicNo(rs.getInt("MUSIC_ID")); -->
<td><%=musicList.get(i).getMusicName()%></td>
<td><%=musicList.get(i).getSinger()%></td>
<td><%=musicList.get(i).getSize()%></td>
<td><%=musicList.get(i).getMusicType()%></td>
<td><a href="#">删除</a></td>
</tr>
<%} %>
</table>
</body>
</html>
删除案例
1,struts会默认调用Action类中的execute()方法,想要使用自定的方法必须配置method属性指定方法的名称,
2,对于上述配置,如果一个Action类有多个方法处理用户请求,就会在struts.xml文件中为同一个类配置多个不同的方法。

这种使用method属性来调到方法的方式导致配置文件中的产生了大量的
<action>元素,非常不便于代码的后期维护,如何解决此问题?
,3,可以使用动态的方法调用:
语法 <form action="DemoAction!methodName.action">
DemoAction:<action>中的name属性,
! :分隔符
methodName:Action类中的方法名称
4,<!--定义常量,以下信息表示Struts2允许动态方法调用-->
<constant name="struts.enable.DynamicMethodInvocation"
value="true"/>
5,"redirectAction" 使用于重定向到一个Action中
使用动态的方法时,应当是在请求时解析action名和“!”后的方法名
Struts.xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation"
value="true"/>
<package name="hello"namespace="/"extends="struts-default">
<action name="queryOrDeleteAction"
class="action.MusicManager"><!-- method="queryAllMusic"本来是action中的方法现在result中的name是action中的方法 -->
<!-- <action中的name是跳转的超链接或是srca
href="queryAction.action" class是404路径问题没有找到路径 method 是action中的.action文件String queryAllMusic()-->
<result name="queryAllMusic"
type="dispatcher">/jsp/success.jsp</result>
<result name="deleteMusic"
type="redirectAction">queryOrDeleteAction!queryAllMusic.action </result><!-- 删除也要显示内容 -->
</action>
</package>
</struts>
404最简单的错了路径错误配置错误的路径包或者配置问题
Chain
strData:data
param1: 图图
param2: 妈妈
===============Action2==============
strData: data
param1: 图图
param2: 妈妈
Web.xml
<?xml version="1.0"encoding="UTF-8"?>
<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID"version="3.0">
<display-name>struts2</display-name>
<filter>
<filter-name>struts</filter-name>
<filter-
class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAnd ExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
Struts.xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation"
value="true"/>
<package name="strutsdemo"namespace="/"extends="struts-default">
<action name="sendData"class="action.Action1"
method="sendData"><!-- 超链接 -->
<param name="param1">图图</param>
<param name="param2">妈妈</param>
<result name="success"type="chain">chainData</result><!-- Action1跳转Action2 -->
</action>
<action name="chainData"class="action.Action2"
method="sendData">
<!-- 通过sendData转发过来的参数,优先级高于自己同名的参数,所以param1值为上一个Action中的param1的值其它值可以转发到下一个Action中 -->
<param name="param1">爸爸</param>
<result name="success">/success.jsp</result> </action>
</package>
</struts>
Action1.java
package action;
public class Action1 {
String strData;
String param1;
String param2;
public String sendData(){
System.out.println("strData:"+strData);
System.out.println("param1: "+ param1);
System.out.println("param2: "+ param2);
return"success";
}
public String getStrData() {
return strData;
}
public void setStrData(String strData) {
this.strData = strData;
}
public String getParam1() {
return param1;
}
public void setParam1(String param1) {
this.param1 = param1;
}
public String getParam2() {
return param2;
}
public void setParam2(String param2) {
this.param2 = param2;
}
}
Action2.java
package action;
public class Action2 {
String strData;
String param1;
String param2;
public String sendData(){
System.out.println("===============Action2==============" );
System.out.println("strData: "+ strData);
System.out.println("param1: "+ param1);
System.out.println("param2: "+ param2);
return"success";
}
public String getStrData() {
return strData;
}
public void setStrData(String strData) {
this.strData = strData;
}
public String getParam1() {
return param1;
}
public void setParam1(String param1) {
this.param1 = param1;
}
public String getParam2() {
return param2;
}
public void setParam2(String param2) {
this.param2 = param2;
}
}
Index.jsp
<%@page language="java"contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html;
charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="sendData.action?strData=data">Action1跳转Action2</a> </body>
</html>
Success.java
<%@page language="java"contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html;
charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Action1转发Action2的值为:${strData }
<br/>配置文件中的参数param1为:${param1}
<br/>配置文件中的参数param2为:${param2}
</body>
</html>
消息通配符
Action.java
package action;
public class Action {
public String message;
public String update(){
message="================我执行的时
update()==========================";
return"update";
}
public String add(){
message="================我执行的时
add()==========================";
return"add";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Struts.xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"/dtds/struts-2.3.dtd">
<struts>
<package name="strutsdemo"namespace="/"extends="struts-default">
<action name="Action_*"method="{1}"class="action.Action">
<!-- 通配符 * 代表action中的方法而action name就是超链接 1代表按照顺序此时1就是第一个method -->
<result name="{1}">{1}.jsp</result>
</action>
</package>
</struts>
Update.jsp
<%@page language="java"contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html;
charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${message }
</body>
</html>
Add.jsp
<%@page language="java"contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html;
charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${message }
</body>
</html>
Index.jsp
<%@page language="java"contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html;
charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="Action_update.action">更新</a><br>
<a href="Action_add.action">添加</a>
</body>
</html>。

相关文档
最新文档