Struts第二天总结案例

来源:互联网 发布:会计软件有哪几种 编辑:程序博客网 时间:2024/05/17 00:14

这里省略登录界面和登录成功的跳转界面;这两个界面都是比较简单的jsp页面;省略了bean文件,其中只是封装了usernamepassword属性

1.web.xml 配置文件

[java]view plaincopyprint?

<?xml version="1.0" encoding="UTF-8"?> 

<web-app version="2.5" 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_2_5.xsd">  

<filter> 

<filter-name>struts2</filter-name> 

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

</filter> 

10 

11 <filter-mapping> 

12 <filter-name>struts2</filter-name> 

13 <url-pattern>/*</url-pattern>

14 </filter-mapping> 

15  

16 <welcome-file-list> 

17 <welcome-file>index.jsp</welcome-file> 

18 </welcome-file-list> 

19 </web-app> 

20 2.struts.xml配置文件,struts2配置最重要的文件,名字不能修改 

21 <?xml version="1.0" encoding="UTF-8" ?> 

22 <!DOCTYPE struts PUBLIC 

23 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 

24 "http://struts.apache.org/dtds/struts-2.3.dtd"> 

25  

26 <struts> 

27 <!-- 

28 package包:只提供包与继承;name属性为随便起的名字,写个空值都可以,但是必须有如果没有会报错Attribute "name" is required and must be specified for element type "package". at; 

29 namespace:用于与jsp中写的路径匹配,即浏览器中访问的路径; 

30 extends:继承,继承其他包并拥有其他包的所有特性,默认继承struts-default包 

31 --> 

32 <package name="test" namespace="/csdn" extends="struts-default"> 

33 <!-- 

34 默认的类继承的是struts-default包中的默认继承类 <default-class-ref 

35 class="com.opensymphony.xwork2.ActionSupport" /> 

36 class的属性值可以修改成自己编写的类,只是要填写该类的全限制名; 

37 如果权限名写错就会出现 Error filterStart错误; 

38  

39 可以不写method,不写默认的method方法是execute, 

40 如果要用自己类中定义的其他方法那么必须加上method属性,不加肯定会出错找不到结果集中的action,与result标签的name属性不写的错误一样 

41 加上但是method的值中方法与实际类中的方法不一致会出错:NoSuchMethodException就是没有这样的方法 

42  

43 action类的处理方法通过method属性控制选择哪个方法;所有的action类都有一个默认的处理方法 execute() 

44  

45 --> 

46 <action name="demo" class="www.csdn.struts2.demo.DemoAction" method="login"> 

47 <!-- 接收com.opensymphony.xwork2.ActionSupport类中的execute方法返回 字符串 

48 通过result标签的name属性指向返回的字符串;如果没有配置name属性,那么的默认的就是name="success" 

49 如果你使用自己编写的类,那么这里的name属性就不了可以省略使其走默认值 ;否则会出错no result defined for action,结果集没用默认的action 

50 --> 

51 <result name="success">/sc.jsp</result> 

52 <result name="login">/index.jsp</result> 

53 </action> 

54 </package> 

55 </struts> 

56 3. c3p0-config.xmlc 3p0配置文件 

57 <c3p0-config> 

58 <default-config> 

59 <property name="driverClass">com.mysql.jdbc.Driver</property> 

60 <property name="jdbcUrl">jdbc:mysql://localhost:3306/struts2</property> 

61 <property name="user">root</property> 

62 <property name="password">root</property> 

63 <property name="initialPoolSize">10</property> 

64 <property name="maxIdleTime">30</property> 

65 <property name="maxPoolSize">100</property> 

66 <property name="minPoolSize">10</property> 

67 <property name="maxStatements">200</property> 

68 </default-config> 

69  

70 <named-config name="mysql"> 

71 <property name="driverClass">com.mysql.jdbc.Driver</property> 

72 <property name="jdbcUrl">jdbc:mysql://localhost:3306/struts2</property> 

73 <property name="user">root</property> 

74 <property name="password">root</property> 

75 <property name="acquireIncrement">5</property> 

76 <property name="initialPoolSize">10</property> 

77 <property name="minPoolSize">50</property> 

78 <property name="maxPoolSize">1000</property> 

79 </named-config> 

80 </c3p0-config>  

81 4.dao实现类 

82 package www.csdn.dao; 

83  

84 import java.sql.SQLException; 

85  

86 import org.apache.commons.dbutils.QueryRunner; 

87 import org.apache.commons.dbutils.handlers.BeanHandler; 

88  

89 import www.csdn.domain.User; 

90 import com.csdn.util.DBManager; 

91  

92 public class ActionDao { 

93  

94 public User login(String username,String password)throws SQLException{ 

95 QueryRunner qr = new QueryRunner(DBManager.getDataSource()); 

96 String sql = "select * from login where username = ? and password = ?"; 

97 Object[] params = {username,password}; 

98 User user = (User) qr.query(sql,params,new BeanHandler(User.class)); 

99 return user; 

100  

101 

102  

103 

104 5.action主要类 

105 package www.csdn.struts2.demo; 

106  

107 import java.sql.SQLException; 

108  

109 import www.csdn.dao.ActionDao; 

110 import www.csdn.domain.User; 

111  

112 import com.opensymphony.xwork2.ActionSupport; 

113  

114 /*** 

115 *  

116 自己编写的action类可以不继承ActionSupport,不继承直接使用自己编写的类不会出错; 

117 但是大多数情况下要继承ActionSupport类或实现Action接口,因为ActionSupport类中封装了大多数需要的常量, 

118 继承之后就可以直接使用这些常量而不需要再自己去定义 

119 */ 

120 public class DemoAction extends ActionSupport{ 

121 

122 //封装请求的参数,必须与jsp页面中的input标签的username名字相同  

123 private String username; 

124 private String password; 

125 private User entity; 

126 //set方法用于获取jsp页面传过来的参数  

127 public void setUsername(String username) { 

128 this.username = username; 

129 

130 public void setPassword(String password) { 

131 this.password = password; 

132 

133 public User getEntity() { 

134 return entity; 

135 

136 

137 //get方法用于从action中获取值传到webjsp页面输出  

138 /* public String getUsername() {

139 return username; 

140 }*/ 

141 

142 

143 public String login(){ 

144 ActionDao dao = new ActionDao(); 

145 try 

146 entity = dao.login(username,password); 

147 catch (SQLException e) { 

148 e.printStackTrace(); 

149 

150 if(entity != null){ 

151 return SUCCESS; 

152 }else

153 return LOGIN; 

154 

155 

 

156 public String execute(){ 

157 System.out.println("处理中。。。。。。"); 

158 return SUCCESS; 

159 

160 

161 6.util工具类 

162 package com.csdn.util; 

163 

164 import java.sql.Connection; 

165 import java.sql.SQLException; 

166 import javax.sql.DataSource; 

167 import com.mchange.v2.c3p0.ComboPooledDataSource; 

168 

169 public class DBManager { 

170 private static ComboPooledDataSource ds = null

171 static

172 //这里要注意的是:xml配置文件的名字一定要是c3p0-config.xml,可以doc参考帮助,帮助中有命名,如果名字写错了会无法加载驱动,空指针的错  

173 ds = new ComboPooledDataSource("mysql"); 

174 

175 public static Connection getCon() throws SQLException{ 

176 return ds.getConnection(); 

177 

178 public static DataSource getDataSource(){ 

179 return ds; 

180 

181 

原创粉丝点击