您的位置:首页 > 编程语言 > Java开发

Struts第二天总结案例

2013-02-28 12:52 232 查看
这里省略登录界面和登录成功的跳转界面;这两个界面都是比较简单的jsp页面;省略了bean文件,其中只是封装了username和password属性

1.web.xml 配置文件
[java]view plaincopyprint?
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 6 <filter>
7 <filter-name>struts2</filter-name>
8 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
9 </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中获取值传到web的jsp页面输出
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 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: