struts2.0简单页面 (不带拦截器和带拦截器案例)
做一個不帶攔截器的struts 登錄驗證 ? ? ? ? ? ? 不帶攔截器,用戶能直接訪問action頁面訪問到數據,起不到登錄驗證的作用
1.使用c3p0 ?連接 mysql ?,數據庫字段與 java 字段一致
c3p0默認加載 ?c3p0-config.xml 配置文件
<c3p0-config> <default-config> <property name="jdbcUrl">jdbc:mysql:///hib_demo </property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="user">root</property> <property name="password">root</property> <property name="initialPoolSize">3</property> <property name="maxPoolSize">6</property> <property name="maxIdleTime">1000</property> </default-config><named-config name="oracle_config"> <property name="jdbcUrl">jdbc:mysql:///hib_demo</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="user">root</property> <property name="password">root</property> <property name="initialPoolSize">3</property> <property name="maxPoolSize">6</property> <property name="maxIdleTime">1000</property> </named-config></c3p0-config>?
jdbcutils.java ? ? cn.itcast.utils包
package cn.itcast.utils; import javax.sql.DataSource;import org.apache.commons.dbutils.QueryRunner;import com.mchange.v2.c3p0.ComboPooledDataSource;public class jdbcutils { private static DataSource datasource; static{datasource =new ComboPooledDataSource();} public static DataSource getdatasource(){return datasource; } public static QueryRunner getquerrrunner(){return new QueryRunner(datasource); } }?
?
?
?
=====================================================================
2.項目中加載的jar包:
struts-jar( commons-fileupload-1.2.2;commons-io-2.0.1;commons-lang3-3.1;freemarker-2.3.19;javassist-3.11.0.GA;ognl-3.0.5;struts2-core-2.3.4.1;xwork-core-2.3.4.1)
? ? c3p0-0.9.1.2;commons-dbutils-1.6;mysql-connector-java5.1.12
?
3. ?login.jsp ? 登錄頁面
? ??
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><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"> </head><body><form method="post" action="${pageContext.request.contextPath }/user_login.action">用戶名:<input type="text" name="admin.username"><br/> //存放值 密碼:<input type="text" name="admin.pwd"><br/><input type="submit" value="登陸"><br/></form></body> </html>?
list.jsp ? 顯示頁面 ? ?位置放置于 ?webroot\web-inf
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>list</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> </head><body><h1>歡迎你,${userinfo.username }</h1><table align="center" border="1"><tr><td>序號</td><td>編號</td><td>用戶名</td><td>密碼</td></tr><%@taglib uri="/struts-tags" prefix="s" %><s:iterator var="admin" value="#request.listadmin" status="st"><tr><td><s:property value="#st.count"/> //ognl表達式取值</td><td><s:property value="#admin.id"/></td><td><s:property value="#admin.username"/></td><td><s:property value="#admin.pwd"/></td></tr></s:iterator></table></body> </html>?
web.xml ? ? ? ? struts攔截所有請求
<?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"><display-name></display-name> <filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list> </web-app>?
?
4. ? ?admin.java ? ? ? ? 跟數據庫 字段一致
package cn.itcast.entity;public class admin {private int id;private String username;private String pwd;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;} }?
?
admindao.java?
package cn.itcast.dao;import java.sql.SQLException; import java.util.List;import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.junit.Test;import cn.itcast.entity.admin; import cn.itcast.utils.jdbcutils;public class admindao {public admin login(admin admin){String sql="select * from admin where username=? and pwd=?";try {return jdbcutils.getquerrrunner().query(sql,new BeanHandler<admin>(admin.class),admin.getUsername(),admin.getPwd());} catch (SQLException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);}} public List<admin> getall(){String sql="select * from admin";try {return jdbcutils.getquerrrunner().query(sql, new BeanListHandler<admin>(admin.class));} catch (SQLException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);} } }?
?
adminservice.java
package cn.itcast.service;import java.util.List;import cn.itcast.dao.admindao; import cn.itcast.entity.*; public class adminservice { private admindao admindao = new admindao(); public admin login(admin admin){return admindao.login(admin); } public List<admin> getall(){return admindao.getall(); } }?
?
struts.xml ?
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="user" extends="struts-default"><global-results><result name="error">/error.jsp</result></global-results><action name="user_*" class="cn.itcast.action.useraction" method="{1}"><!-- 1. 登陸失敗 --><result name="input">/login.jsp</result><!-- 2. 登陸成功 --><result name="loginSuccess" type="redirectAction">user_list</result> //設置 跳轉 而不是簡單的頁面跳轉,需要傳值!<!-- 3. 列表展示 --><result name="list">/WEB-INF/list.jsp</result></action></package> </struts>?
useraction.java
package cn.itcast.action;import java.util.List;import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import cn.itcast.entity.*; import cn.itcast.service.*;public class useraction extends ActionSupport { private admin admin;public admin getAdmin() { //注意 如果該處寫 getadmin() setadmin() ;struts是找不到admin數據的;受到struts取值影響,必須使用eclipse習慣用法。return admin; }public void setAdmin(admin admin) {this.admin = admin; }private adminservice adminservice= new adminservice();public String login(){try {admin userinfo= adminservice.login(admin);if(userinfo==null){return "input";}ActionContext.getContext().getSession().put("userinfo", userinfo);return "loginSuccess";} catch (Exception e) {// TODO Auto-generated catch blockreturn ERROR;} }public String list(){try {List<admin> list=adminservice.getall();ActionContext.getContext().getContextMap().put("listadmin", list);return "list";} catch (Exception e) {// TODO Auto-generated catch blockreturn ERROR;} } }?
?
?
?
?
?
設置攔截器:
UserCheckInterceptor.javapackage cn.itcast.interceptor;import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class UserCheckInterceptor extends AbstractInterceptor{/*** 攔截器業務處理方法*/public String intercept(ActionInvocation invocation) throws Exception {// 拿到當前執行的方法名:判斷,只有當前方法名不是login,就進行驗證// 獲取ActionContext對象ActionContext ac = invocation.getInvocationContext();// 獲取action的代理對象ActionProxy proxy = invocation.getProxy();// 獲取當前執行的方法名String methodName = proxy.getMethod();// 判斷if (!"login".equals(methodName)) {// 先獲取當前登陸的用戶Object obj = ac.getSession().get("userInfo");if (obj == null) {// 沒有登陸return "input";} else {// 當前用戶有登陸return invocation.invoke();}} else {// 說明當前用戶正在登陸return invocation.invoke();}}}
?
?
| à 配置攔截器 |
| <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC ??? "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" ??? "http://struts.apache.org/dtds/struts-2.3.dtd"> ? <struts> ??? <package name="user" extends="struts-default"> ??? ??????? <!-- 【攔截器配置】 --> ??????? <interceptors> ??????????? <interceptor name="loginCheck" class="cn.itcast.interceptor.UserCheckInterceptor"></interceptor> ??????????? <interceptor-stack name="myStack"> ??????????????? <interceptor-ref name="defaultStack"></interceptor-ref> ??????????????? <interceptor-ref name="loginCheck"></interceptor-ref> ??????????? </interceptor-stack> ??????? </interceptors> ??????? <!-- 【執行攔截器:第一種寫法: 當前包下所有的acntion都執行myStack棧】 ??????? <default-interceptor-ref name="myStack"></default-interceptor-ref> ??????? ?--> ??? ??????? <!-- 全局配置 --> ??????? <global-results> ??????????? <result name="error">/error.jsp</result> ??????? </global-results> ??????? ??????? <action name="user_*" class="cn.itcast.action.UserAction" method="{1}"> ??????????? ??????????? <!--第二種寫法: 只是在這一個Action中執行myStack棧 ??????????? <interceptor-ref name="defaultStackt"></interceptor-ref> ??????????? <interceptor-ref name="loginCheck"></interceptor-ref> ??????????? --> ??????????? ??????????? <!-- 第三種寫法:執行用戶棧(與第二種寫法一樣, 只在當前aciton中執行自定義棧) --> ??????????? <interceptor-ref name="myStack"></interceptor-ref> ??????????? ??????????? ??????????? ??????????? <!-- 1. 登陸失敗 --> ??????????? <result name="input">/login.jsp</result> ??????????? ??????????? <!-- 2. 登陸成功 --> ??????????? <result name="loginSuccess" type="redirectAction">user_list</result> ??????????? ??????????? <!-- 3. 列表展示 --> ??????????? <result name="list">/WEB-INF/list.jsp</result> ??????????? ??????? </action> ??????? ??? </package> </struts> ? |
| ? |
轉載于:https://www.cnblogs.com/yimian/p/7802354.html
總結
以上是生活随笔為你收集整理的struts2.0简单页面 (不带拦截器和带拦截器案例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMWARE错误-VirtualInfr
- 下一篇: jzoj5462