论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

bs结构下的邮件系统的设计与开发(论文+程序)

分类号:TP311.1                      UD C:D10621-408-(2007) 5926-0

paper51.com

图6 非法用户登录页面 paper51.com

当用户登录名不存在时所显示的页面如图7所示。 http://www.paper51.com

http://www.paper51.com

                    

内容来自论文无忧网 www.paper51.com

图7 用户名不存在时显示的页面 copyright paper51.com

主要代码:

内容来自www.paper51.com

html:formaction="/login.do" method="post">

paper51.com

该代码是在Login.jsp中实现由用户提交表单后提交到的控制器位置。提交方法为post. copyright paper51.com

<action name="login"path="/login" scope="session"

内容来自www.paper51.com

  type="com.action.LoginAction"input="/Login.jsp"> 内容来自论文无忧网 www.paper51.com

  <forward name="recev"path="/reseviAll.jsp"></forward> 内容来自www.paper51.com

  <forward name="return"path="/Login.jsp"></forward>

内容来自www.paper51.com

  </action>

paper51.com

而在Struts框架中的关键是对核心配置文件Struts-Config.xml的配置, 该配置决定了整个应用程序的程序控制。该代码是在对Login.jsp提交上来的Action和ActionForm的查找做部署。名字为"login",提交路径为path="/login",生存周期为会话,该控制器的物理路径为type="com.action.LoginAction",<forward 标签为当控制器处理完后返回一个Actionorward的对象,该对象将在该标签内对应,查找到对应的name属性后,根据path跳转到对应的jsp.该action的name属性将找对应的ActionForm进行相应的表单填充。actionForm的配置代码如下 http://www.paper51.com

<form-beanname="login" type="org.apache.struts.validator.DynaValidatorForm"> 内容来自www.paper51.com

    <form-propertyname="name"type="java.lang.String"></form-property> http://www.paper51.com

        <form-property name="pass"type="java.lang.String"></form-property>

内容来自www.paper51.com

           <form-property name="server"type="java.lang.String"></form-property>

内容来自论文无忧网 www.paper51.com

  </form-bean>

内容来自www.paper51.com

该ActionForm是一个动态的ActionForm,该类继承于

paper51.com

org.apache.struts.validator.DynaValidatorForm,在<form-property标签里面指定他的属性和类型。

paper51.com

在对表单的非空验证的时候用了Validator验证框架,该框架的配置文件如下:

内容来自www.paper51.com

 <plug-inclassName="org.apache.struts.validator.ValidatorPlugIn">

paper51.com

       <set-property property="pathnames" value="/WEB-INFalidator-rules.xml, copyright paper51.com

                                                 /WEB-INF alidation.xml"/> 内容来自www.paper51.com

      </plug-in> copyright paper51.com

对应的配置文件的实现如下代码: copyright paper51.com

<formname="login"> paper51.com

  <field property="name"depends="required"> http://www.paper51.com

  <arg0 key="name"/> paper51.com

  </field> http://www.paper51.com

   <field property="pass"depends="required"> http://www.paper51.com

  <arg0 key="pass"/>

http://www.paper51.com

  </field>

http://www.paper51.com

</form>

copyright paper51.com

</formset> 内容来自www.paper51.com

上面的代码是对表单的非空验证,<form name="login">是对应的要验证的表单名字,<fieldproperty="name" depends="required">中property为指定要验证的表单控件名字,depends为验证方法,该方法在Validator验证框架中已经定义。可以查阅alidator-rules.xml配置文件。 <arg0 key="pass"/> 内容来自www.paper51.com

为要输出信息的差数,该差数可以在资源文件中定义。

内容来自论文无忧网 www.paper51.com

public ActionForwardexecute(ActionMapping mapping,ActionForm form, copyright paper51.com

        HttpServletRequestrequest,HttpServletResponse response){ 内容来自www.paper51.com

        DynaActionForm ac=(DynaActionForm)form;

内容来自www.paper51.com

        String ser=null;

copyright paper51.com

        if(((String)ac.get("server")).equals("1")){ 内容来自论文无忧网 www.paper51.com

             ser=(String)ac.get("name")+"@163.com";}

http://www.paper51.com

        elseif(((String)ac.get("server")).equals("2")){ paper51.com

             ser=(String)ac.get("name")+"@sina.com";}

paper51.com

        elseif(((String)ac.get("server")).equals("3")){ 内容来自www.paper51.com

             ser=(String)ac.get("name")+"@yahoo.com";} http://www.paper51.com

上面代码是控制器实现对用户权限的合法性的判断。其中Action是Struts框架中的控制器,通过重写它的execute方法实现Struts控制器。DynaActionForm ac=(DynaActionForm)form为实例已经填充的ActionForm对象。通过用户在下拉列表中选择的邮箱来判断代理服务器的名字。 http://www.paper51.com

对用户是否在数据库中存在的方法的调用

copyright paper51.com

             CheckU cu=new CheckU(); copyright paper51.com

             booleant=cu.check((String)ac.get("name"),(String)ac.get("pass"),ser);

paper51.com

             HttpSessionsession=request.getSession(); 内容来自www.paper51.com

             session.setAttribute("server",ser); http://www.paper51.com

             if(t==false){ 内容来自论文无忧网 www.paper51.com

                    ActionErrorserrors = new ActionErrors();

http://www.paper51.com

                    errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("index.error"));

内容来自www.paper51.com

                    this.saveErrors(request,errors);

内容来自论文无忧网 www.paper51.com

                    returnmapping.findForward("return");}

http://www.paper51.com

如果数据库中该用户名字存在则返回一个TRUE,通过判断来选择是跳转到哪个页面。return mapping.findForward("return")就是返回一个在Struts-config.xml中存在的forward对象。

paper51.com

             publicboolean check(String name,String pass,String server){

内容来自论文无忧网 www.paper51.com

             String sql="select * from Userinfo where uname=(?)and pass=(?) and server=(?)"; http://www.paper51.com

查询的游标字符串。 paper51.com

             booleanT=false; 内容来自www.paper51.com

             try{Class.forName(ul);}

http://www.paper51.com

建立驱动。 http://www.paper51.com

             catch(ClassNotFoundExceptione){e.printStackTrace();}

http://www.paper51.com

             try{Connection con=DriverManager.getConnection(ur); copyright paper51.com

建立连接            http://www.paper51.com

    try{PreparedStatementpt=con.prepareStatement(sql);

copyright paper51.com

  建立预编译对象。                

内容来自www.paper51.com

try{ pt.setString(1,name); 内容来自论文无忧网 www.paper51.com

    pt.setString(2,pass); http://www.paper51.com

           pt.setString(3,server);

内容来自论文无忧网 www.paper51.com

设置编译对象的差数。

paper51.com

             ResultSetrs=pt.executeQuery();

http://www.paper51.com

用结果集来存储返回记录。              

paper51.com

while(rs.next()){T=true;}} http://www.paper51.com

如果有该记录返回真。 http://www.paper51.com

                    finally{pt.close();}} paper51.com

                    finally{con.close();}} copyright paper51.com

             catch(SQLExceptionq){q.printStackTrace();} paper51.com

             returnT; } copyright paper51.com

4.3   邮件发送模块

paper51.com

登录成功后点击超链接进入发邮件箱,在这里用户可以输入相应的信息,可超链接到发件箱,输入内容表单提交,进入控制器SendM,在execute方法里调用邮件发送核心代码(SendText.java),在该方法中利用SMTP发送邮件的代码,发送邮件主要需要4个主要的对象,Session对象,建立连接;Prop是Properties的对象,Properties是java.util包下的类,是一个集合类,封装SMTP协议的类;MimeMessage类,通过该对象来实现网络数据的传输,将发件人添加到列表中;sendmail为从表单中提交来的路径的字符串形式。通过他将正文和附件内容分开封装进行传输;附件以DataSource类型保存。发送邮件,从MimeMessage对象中获得发送人的地址列表,发送成功后进入secces界面。

内容来自www.paper51.com

http://www.paper51.com

    内容来自论文无忧网 www.paper51.com

------分隔线----------------------------
联系方式